如果dataitem为Null
,我想显示0
<asp:Label ID="Label18" Text='<%# Eval("item") %>' runat="server"></asp:Label>
我该如何做到这一点?
答案 0 :(得分:67)
您还可以在页面上创建一个公共方法,然后从前面的代码中调用它。
e.g。如果使用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")) %>
”完全正确。
答案 1 :(得分:45)
我将其用于字符串值:
<%#(String.IsNullOrEmpty(Eval("Data").ToString()) ? "0" : Eval("Data"))%>
您还可以使用以下值作为可以为空的值:
<%#(Eval("Data") == null ? "0" : Eval("Data"))%>
此外,如果您使用.net 4.5及更高版本,我建议您使用strongly typed data binding:
<asp:Repeater runat="server" DataSourceID="odsUsers" ItemType="Entity.User">
<ItemTemplate>
<%# Item.Title %>
</ItemTemplate>
</asp:Repeater>
答案 2 :(得分:13)
我将以下内容用于VB.Net:
<%# If(Eval("item").ToString() Is DBNull.Value, "0 value", Eval("item")) %>
答案 3 :(得分:4)
它也应该有用
Eval("item") == null?"0": Eval("item");
答案 4 :(得分:3)
此外,在这种情况下你可以使用(x = Eval(“item”)?? 0)。
答案 5 :(得分:1)
我不太了解ASP.NET,但你能使用三元运算符吗?
http://en.wikipedia.org/wiki/Ternary_operation
像: (x = Eval(“item”))== Null? 0:x
答案 6 :(得分:1)
尝试此代码可能有用 -
<%# ((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>")%>
答案 7 :(得分:1)
使用了杰森回答的修改版本:
public string ProcessMyDataItem(object myValue)
{
if (myValue.ToString().Length < 1)
{
return "0 value";
}
return myValue.ToString();
}
答案 8 :(得分:0)
尝试将<%# Eval("item") %>
替换为<%# If(Eval("item"), "0 value") %>
(或使用C#时<%# Eval("item") ?? "0 value" %>
)。
答案 9 :(得分:0)
使用IIF。
<asp:Label ID="Label18" Text='<%# IIF(Eval("item") Is DBNull.Value,"0", Eval("item") %>'
runat="server"></asp:Label>
答案 10 :(得分:0)
我尝试过这段代码,它适用于null和empty情况:
'<%# (Eval("item")=="" || Eval("item")==null) ? "0" : Eval("item")%>'