2016-11-21 31 views
0

我通常使用此语法在标签中显示单位符号:ej。 5'230€抑制标签中的单位显示

<asp:Label runat="server" Text='<%# Eval("TotalAmount","{0:#,###.##}&nbsp;€") %>' id="LabelTotal"/> 

丑陋的事情是,即使值为空或空值,也会显示符号。然后我想要这个符号被压制。

任何人有一个想法如何做到这一点? 马丁

+0

为什么不使用代码隐藏? –

+0

我可能会如果我不能用一个片段解决这个问题。这个标签在GridView中使用,并且OnRowDataBound事件已经包含了代码,所以我宁愿在标记中这样做。 – Barnabeck

回答

1

您可以使用下面的代码片段

<asp:Label runat="server" Text='<%# Convert.ToDecimal(Eval("TotalAmount")) > 0 ? string.Format("{0:C}", Convert.ToDecimal(Eval("TotalAmount"))) : string.Empty %>' id="LabelTotal"/> 

如果要评估的值可以包含null值,你需要检查IsNullOrEmpty第一次转换前。

<asp:Label runat="server" Text='<%# !string.IsNullOrEmpty(Eval("TotalAmount").ToString()) ? Convert.ToDecimal(Eval("TotalAmount")) > 0 ? string.Format("{0:C}", Convert.ToDecimal(Eval("TotalAmount"))) : string.Empty : string.Empty %>' id="Label1"/> 
+0

太棒了,这很完美!谢谢。 – Barnabeck

+0

但它不适用于负数。我试过Convert.ToDecimal(Eval(“LineAmount”))!= 0,但随后它抛出:对象不能从DBNULL转换为其他类型。 – Barnabeck

+0

负值是,空值没有。如果这些值也可以是'null',那么在转换为十进制之前还必须进行'IsNullOrEmpty'验证。查看更新 – VDWWD