asp.net dataitem

asp.net - Usando ''<%#Eval("item")%>''; Manejando Valor Nulo y mostrando 0 en contra



dataitem (11)

Intente reemplazar <%# Eval("item") %> con <%# If(Eval("item"), "0 value") %> (o <%# Eval("item") ?? "0 value" %> , cuando se usa C #).

Si dataitem es Null , quiero mostrar 0

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

¿Cómo puedo lograr esto?




Use IIF.

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


Debería funcionar tan bien

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


prueba este código, podría ser útil -

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


Yo uso lo siguiente para VB.Net:

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


También puede crear un método público en la página y luego llamarlo desde el código de entrada.

por ejemplo, si usa C #:

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

Entonces, la etiqueta en el código en el frente será algo así como:

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

Lo siento, no he probado este código, así que no puedo garantizar que obtuve la sintaxis de " <%# ProcessMyDataItem(Eval("item")) %> " completamente correcta.


He intentado este código y funciona bien para situaciones nulas y vacías:

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


Estoy usando esto para valores de cadena:

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

También puede usar following para valores que aceptan valores NULL:

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

Además, si está utilizando .net 4.5 y superior, le sugiero que utilice un enlace de datos fuertemente tipado :

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


Usó una versión modificada de la respuesta de Jason:

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