2009-12-30 6 views

risposta

60

È anche possibile creare un metodo pubblico sulla pagina, quindi richiamarlo dal codice in primo piano.

ad es. se si utilizza C#:

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

    return myValue.ToString(); 
} 

Poi l'etichetta nella parte anteriore del codice-in-sarà qualcosa di simile:

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

Siamo spiacenti, non hanno testato questo codice in modo non può garantire ho ricevuto la sintassi di "<%# ProcessMyDataItem(Eval("item")) %>" completamente corretto.

+7

Ho effettuato il check in <%# %> i tag e == null non identificano i ritorni nulli; Ho dovuto usare == DBNull.Value. – user467384

+0

Dove dovrei aggiungere questo al mio codice qui: http://stackoverflow.com/questions/27237555/why-empty-cell-throws-an-error-during-sql-stored-procedure-execution – SearchForKnowledge

+0

Vale un controllo aggiuntivo a vedere se myValue.ToString() è vuoto. Ad esempio, Eval ("MyDate", "{0: d}") fornisce una stringa vuota se MyDate è un oggetto DateTime nullable. –

0

Provare a sostituire <%# Eval("item") %> con <%# If(Eval("item"), "0 value") %> (o <%# Eval("item") ?? "0 value" %>, quando si utilizza C#).

+0

non ho testato il tuo codice, ma "<% # If (Eval (" item ")," 0 value ")%>" sembra un po 'strano. Non sei sicuro di poter effettivamente usare un'istruzione If con Eval in questo modo, e il risultato non sarebbe il solo True/False restituito? –

+0

No, questo è l'operatore binario 'If' di VB.NET:' If (value, valueIfNull) ': http://msdn.microsoft.com/en-us/library/bb513985.aspx – Heinzi

0

Usa IIF.

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

sto usando questo per valori di stringa:

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

È inoltre possibile utilizzare seguente per i valori Null:

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

anche se si sta utilizzando .NET 4.5 e superiori Suggerisco di utilizzare strongly typed data binding:

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

Non genererà un'eccezione se Eval ("Dati") è nullo? – KannedFarU

+1

Se il valore è DBNull.Value, allora non lo sarà. Esempio: oggetto a = DBNull.Value; Response.Write (a.ToString()); –

+1

Bene, DBNull.Value non è reale null ... – KannedFarU

4

Dovrebbe funzionare così

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

provare questo codice potrebbe essere utile -

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

Io uso il seguente per VB.Netto:

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

Dove dovrei aggiungere questo al mio codice qui: http://stackoverflow.com/questions/27237555/why-empty-cell-throws-an-error-during- sql-stored-procedure-esecuzione – SearchForKnowledge

0

ho provato questo codice e funziona bene per entrambe le situazioni nulli e vuoti:

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

usato una versione modificata della risposta di Jason:

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

    return myValue.ToString(); 
}