2009-12-30 23 views

Respuesta

60

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

p. Ej. si se utiliza C#:

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

    return myValue.ToString(); 
} 

A continuación, la etiqueta en la parte delantera de código-in-será algo como:

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

Lo sentimos, no han probado este código para garantizar que no se me dio la sintaxis de "<%# ProcessMyDataItem(Eval("item")) %>" completamente correcto.

+7

Hice el cheque en el <%# %> tags y == null no identificaron los retornos nulos; Tuve que usar == DBNull.Value. – user467384

+0

¿Dónde podría agregar eso a mi código aquí: http://stackoverflow.com/questions/27237555/why-empty-cell-throws-an-error-during-sql-stored-procedure-execution – SearchForKnowledge

+0

Merece la pena realizar un control adicional a mira si myValue.ToString() también está vacío. Por ejemplo, Eval ("MyDate", "{0: d}") da una cadena vacía si MyDate es un objeto de fecha y hora que admite valores NULL. –

0

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

+0

yo no tengo probado su código, pero "<% # If (Eval (" item ")," 0 value ")%>" parece un poco extraño. No estoy seguro de que realmente pueda usar una declaración If con Eval como esa, y ¿no sería el resultado simplemente un verdadero/falso? –

+0

No, ese es el operador 'If' binario de VB.NET:' If (value, valueIfNull) ': http://msdn.microsoft.com/en-us/library/bb513985.aspx – Heinzi

0

Uso IIF.

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

estoy usando esto para valores de cadena:

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

También puede utilizar después para valores anulables:

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

Además, si usted está utilizando .NET 4.5 y superiores Sugiero que use strongly typed data binding:

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

¿No arrojará esto una excepción si Eval ("Datos") es nulo? – KannedFarU

+1

Si el valor es DBNull.Value, no lo hará. Ejemplo: object a = DBNull.Value; Response.Write (a.ToString()); –

+1

Bien DBNull.Value correcto no es nulo real ... – KannedFarU

4

Se debe trabajar, así

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

probar 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>")%> 
13

utilizo el siguiente para VB.Neto:

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

¿Dónde podría agregar eso a mi código aquí: http://stackoverflow.com/questions/27237555/why-empty-cell-throws-an-error-during- sql-stored-procedure-execution – SearchForKnowledge

0

he tratado este código y funciona bien para ambas situaciones nulos y vacíos:

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

utilizó 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(); 
} 
Cuestiones relacionadas