使用'<%#Eval(“item”)%>'; 处理空值并显示0反对

如果dataitem是Null我想显示0

 <asp:Label ID="Label18" Text='<%# Eval("item") %>' runat="server"></asp:Label> 

我怎样才能做到这一点?

您也可以在页面上创build公共方法,然后从代码中调用该方法。

例如,如果使用C#:

 public string ProcessMyDataItem(object myValue) { if (myValue == null) { return "0 value"; } return myValue.ToString(); } 

那么在代码中的标签将是这样的:

 <asp:Label ID="Label18" Text='<%# ProcessMyDataItem(Eval("item")) %>' runat="server"></asp:Label> 

对不起,没有testing过这个代码,所以不能保证我得到“ <%# ProcessMyDataItem(Eval("item")) %> ”的语法完全正确。

我正在使用这个string值:

 <%#(String.IsNullOrEmpty(Eval("Data").ToString()) ? "0" : Eval("Data"))%> 

你也可以使用下面的可为空的值:

 <%#(Eval("Data") == null ? "0" : Eval("Data"))%> 

另外,如果您使用.net 4.5及以上,我build议您使用强types的数据绑定 :

 <asp:Repeater runat="server" DataSourceID="odsUsers" ItemType="Entity.User"> <ItemTemplate> <%# Item.Title %> </ItemTemplate> </asp:Repeater> 

我使用VB.Net以下内容:

 <%# If(Eval("item").ToString() Is DBNull.Value, "0 value", Eval("item")) %> 

它也应该工作

 Eval("item") == null?"0": Eval("item"); 

而且,在这种情况下,可以使用(x = Eval(“item”)?0)。

http://msdn.microsoft.com/en-us/library/ms173224.aspx

我不太了解ASP.NET,但可以使用三元运算符吗?

http://en.wikipedia.org/wiki/Ternary_operation

如:(x = Eval(“item”))== Null? 0:x

试试这个代码可能是有用的 –

 <%# ((DataBinder.Eval(Container.DataItem,"ImageFilename").ToString()=="") ? "" :"<a href="+DataBinder.Eval(Container.DataItem, "link")+"><img src='/Images/Products/"+DataBinder.Eval(Container.DataItem, "ImageFilename")+"' border='0' /></a>")%> 

尝试用<%# Eval("item") %> <%# If(Eval("item"), "0 value") %> (或<%# Eval("item") ?? "0 value" %> <%# If(Eval("item"), "0 value") %>replace<%# Eval("item") %> <%# Eval("item") ?? "0 value" %> ,当使用C#)。

使用IIF。

 <asp:Label ID="Label18" Text='<%# IIF(Eval("item") Is DBNull.Value,"0", Eval("item") %>' runat="server"></asp:Label> 

我已经试过这个代码,它适用于null和空情况:

 '<%# (Eval("item")=="" || Eval("item")==null) ? "0" : Eval("item")%>'