使用.NET字符串格式,如何设置字符串格式以显示零(0)的空白(空字符串)?

使用.NET字符串格式,如何设置字符串格式以显示零(0)的空白(空字符串)?,.net,formatting,string-formatting,string.format,.net,Formatting,String Formatting,String.format,我在ASP.NET Datagrid中使用DataBinder.Eval表达式,但我认为这个问题通常适用于.NET中的字符串格式。客户要求如果字符串的值为0,则不应显示该字符串。我有以下技巧来实现这一点: <%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}")) %>

我在ASP.NET Datagrid中使用DataBinder.Eval表达式,但我认为这个问题通常适用于.NET中的字符串格式。客户要求如果字符串的值为0,则不应显示该字符串。我有以下技巧来实现这一点:

<%# IIf(DataBinder.Eval(Container.DataItem, "MSDWhole").Trim = "0", "", 
    DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0}"))  %>
我想更改{0:N0}格式表达式,以便消除IIf语句,但找不到任何有效的语句。

您需要使用,如下所示:

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>
请注意,只有负数部分可以为空,因此我需要在0部分中放置一个空格。阅读

使用自定义方法

public static string MyFormat(double value) {       
    return value == 0 ? "" : value.ToString("0");
}

<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>

像这样绑定时尝试调用函数

<%# MyFunction( DataBinder.Eval(Container.DataItem, "MSDWhole") ) %>

在函数内部,根据接受的答案进行所需的格式设置

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;; }").Trim() %>

今天天气不错。我学到了一些东西,现在还不到10点呢!我希望我能投票两次。几乎正确,但N0是标准格式,您需要自定义格式,例如{0:,0;;}。您不需要在第三部分中添加空格。注意,这不会像您认为的那样起作用:对于整个MSD!=0,您将得到N。组分隔符不支持N0。使用{0:,0;;}@Joe:您确实需要一个空格或用于第三个组,因为忽略了一个空组。{0:+A;-A;}为0返回+A。不需要修剪。@Ruben,你说得对,它应该是一个散列数字占位符,例如,{0:,0;;}谢谢你的格式修复,尼克。我现在知道怎么做了。戴夫,我试过这个主意,效果很好!去掉饰件绝对是一种进步。谢谢
<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>