- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ASP.NET Gridview,其 BoundField 绑定(bind)到十进制值。我使用以下代码将十进制数格式化为货币值:
DataFormatString="{0:C}"
我们有一个 NumberFormatInfo 的自定义实现,它删除了货币符号并修改了千位分隔符。通常这种格式的应用如下:
myDecimal.ToString("C", myCustomNFI);
如何在 Gridview 的 BoundField 元素上指定自定义 NumberFormatInfo?
谢谢
最佳答案
这可以使用自定义绑定(bind)字段来完成。从自定义 BoundField 类开始。下面我尝试遵循您的命名约定。
namespace CustomBoundField
{
public class NFIBoundField : System.Web.UI.WebControls.BoundField
{
protected override string FormatDataValue(object dataValue, bool encode)
{
if (dataValue == null || dataValue == System.DBNull.Value)
return "";
if (base.DataFormatString == string.Empty)
return dataValue.ToString();
// Format as you wish based on dataValue and DataFormatString argument
return string.Format("{0}", dataValue);
}
}
}
在 .ASPX 文件中注册控件:
<%@ Register Namespace="CustomBoundField" TagPrefix="custom" %>
引用 GridView 中的自定义 BoundField:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<custom:NFIBoundField DataField="Price" HeaderText="Price" DataFormatString="{0:NFI}"/>
</Columns>
</asp:GridView>
您将需要在 FormatDataValue() 内部进行操作,以获得您想要的格式。
一些评论:
如果您希望自定义 BoundField处理多种格式,解析base.DataFormatString 来获取格式化类型。换句话说,在中提供 {0:NFI} 或 {0:NFI2}代码前端可能会导致不同的结果格式(如果您在 FormatDataValue 中适应这一点)。
您可能需要考虑创建你自己的格式提供者而不是放置所有格式化逻辑就在 FormatDataValue 内部功能。
这种方法应该对你有用。祝你好运。
关于asp.net - DataFormatString 上的自定义 NumberFormatInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1103774/
这应该非常简单明了,但由于某些原因它行不通。 var myNumber = "100255.123"; var numberFormatInfo = new NumberFormatInfo {Cur
我想读取一个字符串,从该字符串中获取一个特定的数字,将其乘以一个 double ,然后用新的字符串数字替换旧的。相乘后数字的格式发生变化 例子:原始格式8.08000e+14 乘以,比方说二,返回:1
我正在尝试打印 Point3D 列表。但是我不希望它们以最大小数位数打印。我希望能够控制它。 所以我试过了 Point3D loc = new Point3D(x,y,z); var formatte
我正在尝试使用点作为分隔符和两位小数来获取 double 值的字符串解释,但是: double d = 8.78595469; Console.WriteLine(d.ToString("F"));
NumberFormatInfo类包括几个与货币相关的属性,例如货币符号。这意味着可以使用标准格式字符串轻松地将对象格式化和显示为货币。也支持解析。 我的问题是,为什么开箱即用支持货币而不支持其他计量
我们目前正在使用以下内容在我们的网络应用程序中创建美元值(value): string.Format("{0:C0}", dollarValue ); 在这个例子中,如果 dollarValue 是
我有一个 ASP.NET Gridview,其 BoundField 绑定(bind)到十进制值。我使用以下代码将十进制数格式化为货币值: DataFormatString="{0:C}" 我们有一个
我将流程中的数据输出到 csv。我将中间结果存储在数据类中,该数据类还具有将数据输出到字符串的方法,以便将其写入文件。 Class DataClass { // the actual data
我创建了一些用于 Razor 内容渲染的特定格式扩展: public static class FormatExtension { private static CultureInfo Bel
我使用 new CultureInfo("fr-FR") 创建了一个 CultureInfo 对象。现在我有一个号码,我想调用 .ToString("C", FrenchCultureInfo)。生成
我想知道我是否遗漏了什么......我在标准的大不列颠文化下运行。 Double result = 0; if (Double.TryParse("1,2,3", NumberStyles.Any,
我正在重构一些单元测试,发现一些解析策略依赖于 DateTime.TryParseExact 和 sbyte.TryPase,它们本身依赖于 NumberFormatInfo.CurrentInfo
我需要在我的 ASP.NET MVC 应用程序中显示货币,但当货币为 0 时,我希望它显示“免费”(当然是本地化!)而不是 $0.00。 所以当我遇到这样的事情时...... Decimal pric
NumberFormatInfo nfi = new NumberFormatInfo() { CurrencySymbol = "$$s. ", CurrencyGroupSepar
我是一名优秀的程序员,十分优秀!