我在ASP.NET Datagrid中使用DataBinder.Eval表达式,但我认为这个问题一般适用于.NET中的String格式。客户已请求如果字符串的值为0,则不应显示该字符串。我有以下黑客来实现这个目标:
<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "",
DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}")) %>
我想更改{0:N0}
格式表达式,以便我可以删除IIf语句,但找不到任何有用的语句。
答案 0 :(得分:10)
您需要使用section separator,如下所示:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
请注意,只有否定部分可以为空,因此我需要在0
部分中添加空格。 (阅读documentation)
答案 1 :(得分:3)
鉴于接受的答案:
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
a空格位于第3个位置,但是将#
放在第3个位置将无需拨打Trim()
。
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>
答案 2 :(得分:0)
使用自定义方法。
public static string MyFormat(double value) {
return value == 0 ? "" : value.ToString("0");
}
<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>
答案 3 :(得分:0)
尝试像这样绑定时调用函数
<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>
并在函数内部进行所需的格式化