Met ‘<%# Eval(“item”) %>’; Null-waarde verwerken en 0 tonen tegen

Als dataitem Nullis, wil ik 0

weergeven

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

Hoe kan ik dit bereiken?


Antwoord 1, autoriteit 100%

Je kunt ook een openbare methode op de pagina maken en die vervolgens aanroepen vanuit de code-in-front.

bijv. bij gebruik van C#:

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

Het label in de code-in-front zal dan zoiets zijn als:

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

Sorry, ik heb deze code niet getest, dus ik kan niet garanderen dat ik de syntaxis van “<%# ProcessMyDataItem(Eval("item")) %>” helemaal correct heb.


Antwoord 2, autoriteit 75%

Ik gebruik dit voor tekenreekswaarden:

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

Je kunt ook het volgende gebruiken voor nullable-waarden:

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

Ook als u .net 4.5 en hoger gebruikt, raad ik u aan sterk getypte gegevensbinding:

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

Antwoord 3, autoriteit 19%

Ik gebruik het volgende voor VB.Net:

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

Antwoord 4, autoriteit 6%

Het zou ook moeten werken

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

Antwoord 5, autoriteit 4%

Bovendien kunt u in dit geval (x = Eval(“item”) ?? 0) gebruiken.

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


Antwoord 6

Ik ken ASP.NET niet zo goed, maar kun je de ternaire operator gebruiken?

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

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


Antwoord 7

probeer deze code, het kan nuttig zijn –

<%# ((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>")%>

Antwoord 8

Gebruikte een aangepaste versie van Jasons antwoord:

public string ProcessMyDataItem(object myValue)
{
  if (myValue.ToString().Length < 1)
  {
     return "0 value";
  }
  return myValue.ToString();
}

Antwoord 9

Probeer <%# Eval("item") %>te vervangen door <%# If(Eval("item"), "0 value") %>(of <%# Eval("item") ?? "0 value" %>, bij gebruik van C#).


Antwoord 10

Gebruik IIF.

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

Other episodes