Controlla se Eval ("valore") è nullo
Domanda
Abbastanza nuovo a C#
Ho bisogno di lanciare un valore per aggiungere minuti a una data ma può essere nullo.Ecco come faccio:
if(Eval("DUREE") != DBNull.Value)
{
var duration = Convert.ToInt32(Eval("DUREE"));
var date = Convert.ToDateTime(Eval("DATE"));
var dateAsString = Convert.ToString(date.AddMinutes(duration));
DataBinder.Eval(Container.DataItem, dateAsString, "{0:HH:mm}")
}
else
{
" - "
}
.
Qui l'errore che ottengo:
.Databinting: 'System.Data.DatarowView' non Comporta proprietà chiamata: '17 / 04/2014 13:30:00 '.
Quindi, il controllo è falso?O l'errore è altrove?
Soluzione
Prova a utilizzare il codice in ASPX in posizione in cui è necessaria la stringa con data o "-"
<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value
? " - "
: Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %>
.
Problema nel tuo codice in DataBinder.Eval
Pass Secondo String Parameter con data ma non nome della proprietà.
Altri suggerimenti
Assumendo il metodo 'Eval' è restituito un valore di data in forma di una stringa, è questo ciò che stai cercando di fare?:
Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute)
.
Questa potrebbe essere la risposta al tuo problema per aggiungere minuti.
Tuttavia, l'errore che stai vendendo sembra indicare un problema diverso.Il codice che hai pubblicato sembra essere in codice dietro (?).Il metodo DataBinder.Eval
verrà in genere utilizzato in ASPX per il controllo Web come il controllo del ripetitore.Nel qual caso dovrai superare il secondo parametro a DataBinder.Eval
come nome di una proprietà pubblica.
Puoi verificarlo per chiarezza click qui
È possibile eseguire l'aggiunta di minuti durante il ritorno del valore della proprietà