6

我在 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 语句,但找不到任何有效的方法。

4

4 回答 4

10

您需要使用部分分隔符,如下所示:

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

请注意,只有负数部分可以为空,所以我需要在该0部分中放置一个空格。(阅读文档

于 2010-02-17T16:49:38.813 回答
3

鉴于接受的答案:

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

a 空格放在第三个位置,但是将 a#放在第三个位置将消除调用 的需要Trim()

<%# DataBinder.Eval(Container.DataItem, "MSDWhole", "{0:N0;;#}") %>
于 2010-09-09T14:03:16.557 回答
0

使用自定义方法。

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

<%# MyFormat(Convert.ToDouble(Eval("MSDWhole"))) %>
于 2010-02-17T16:50:57.347 回答
0

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

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

并在函数内部进行您想要的格式

于 2010-02-17T16:52:59.667 回答