我的应用程序当前将负数显示为 -1。用户已经改变了要求(只是为了改变!),现在我们必须将数字显示为 (1)。我可以为整个应用程序启用它,比如更改 web.config 甚至应用程序的 CultureInfo 吗?由于我们有很多包含数字验证器的页面,这样做有什么副作用吗?
谢谢 !
我的应用程序当前将负数显示为 -1。用户已经改变了要求(只是为了改变!),现在我们必须将数字显示为 (1)。我可以为整个应用程序启用它,比如更改 web.config 甚至应用程序的 CultureInfo 吗?由于我们有很多包含数字验证器的页面,这样做有什么副作用吗?
谢谢 !
我会使用字符串格式。对应用程序的配置进行更改以满足 UI 要求是很严厉的。SteveX 写了一篇很棒的关于字符串格式化的博文。它还与标记 (aspx) 兼容,而不仅仅与代码相关。
从他的帖子:
String.Format(”{0:$#,##0.00;($#,##0.00);Zero}”, value);
This will output “$1,240.00″ if passed 1243.50. It will output the
same format but in parentheses if the number is negative, and will
output the string “Zero” if the number is zero.
这不是你想要的,但它很接近。
检查这个.. http://msdn.microsoft.com/en-us/library/91fwbcsb.aspx
将指定样式的数字的字符串表示形式转换为其等效的十进制。
String.Format(”{0:f;(f);0”, -1);
我已将以下页面添加为用于进行字符串格式化的书签:http: //idunno.org/archive/2004/14/01/122.aspx
大约一半下来,它给出了答案:
String.Format("{0:£#,##0.00;(£#,##0.00);Nothing}", value);
为了回答您的其他问题,出于其他答案中给出的原因,我不会修改 app.config 以使其全局化。
这行得通。
DataFormatString="{0:c0}"
您总是可以编写自己的自定义 ToString() 方法作为扩展方法,但就像您提到的那样,使用 CultureInfo 可能更好。看看这里:
您是否在 Gridview/Datagrids 中显示您的数据?如果是这样,那么可以对每个绑定列应用格式化,例如:
<asp:BoundField DataFormatString="{##;(##)}"/>
这仅适用于整数但是...