如果数据项是Null
我想显示0
<asp:Label ID="Label18" Text='<%# Eval("item") %>' runat="server"></asp:Label>
我怎样才能做到这一点?
您还可以在页面上创建一个公共方法,然后从前面的代码中调用它。
例如,如果使用 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>
抱歉,没有测试过这段代码,所以不能保证我的“ <%# 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");
此外,在这种情况下,您可以使用 (x = Eval("item") ?? 0) 。
我对ASP.NET不是很了解,但是可以用三元运算符吗?
http://en.wikipedia.org/wiki/Ternary_operation
类似于: (x=Eval("item")) == Null ?0:×
试试这个代码它可能有用 -
<%# ((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>")%>
使用了 Jason 答案的修改版本:
public string ProcessMyDataItem(object myValue)
{
if (myValue.ToString().Length < 1)
{
return "0 value";
}
return myValue.ToString();
}
尝试替换<%# Eval("item") %>
为<%# If(Eval("item"), "0 value") %>
(或<%# 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")%>'