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?
No sé ASP.NET muy bien, pero ¿puedes usar el operador ternario?
http://en.wikipedia.org/wiki/Ternary_operation
Algo como: (x = Eval ("item")) == ¿Nulo? 0: x
Además, puede usar (x = Eval ("item") ?? 0) en este caso.
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();
}