如果 dataitem 是
Null
,我想显示 0
。<asp:Label ID="Label18" Text='<%# Eval("item") %>' runat="server"></asp:Label>
我该如何实现这个目标?
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>
抱歉,我没有测试过这段代码,所以无法保证我完全正确地理解了 "<%# ProcessMyDataItem(Eval("item")) %>
" 的语法。
我在使用这个代码处理字符串数值:
<%#(String.IsNullOrEmpty(Eval("Data").ToString()) ? "0" : Eval("Data"))%>
对于可空值,您还可以使用以下方法:
<%#(Eval("Data") == null ? "0" : Eval("Data"))%>
如果你正在使用 .Net 4.5 及以上版本,我建议你使用强类型数据绑定。详情请参考这里。
<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");
<asp:Label ID="Label18" Text='<%# IIF(Eval("item") Is DBNull.Value,"0", Eval("item") %>'
runat="server"></asp:Label>
public string ProcessMyDataItem(object myValue)
{
if (myValue.ToString().Length < 1)
{
return "0 value";
}
return myValue.ToString();
}
<%# ((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>")%>
我不太了解ASP.NET,但是你能使用三元运算符吗?
http://en.wikipedia.org/wiki/Ternary_operation
类似这样: (x=Eval("item")) == Null ? 0 : x
我已经尝试了这段代码,它可以很好地处理空值和空字符串的情况:
'<%# (Eval("item")=="" || Eval("item")==null) ? "0" : Eval("item")%>'