Verifique se a função Eval("VALOR") é nulo
Pergunta
Muito novo para C#
Eu precisa para lançar um valor para adicionar minutos a uma data, mas ele pode ser nulo.Veja como eu faço :
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
{
" - "
}
Aqui o erro que eu recebo :
De ligação de dados :Do sistema'.Dados.DataRowView' não esteja de acordo propriedades de chamada :'17/04/2014 13:30:00'.
Então, o cheque é falso?Ou o erro está em outro lugar?
Solução
Tente usar o código aspx no lugar onde você precisa de seqüência de caracteres com data ou " - "
<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value
? " - "
: Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %>
Problema no seu código que você DataBinder.Eval
passar o segundo parâmetro de seqüência de caracteres com data, mas não o nome da propriedade.
Outras dicas
Supondo que 'Eval' método está retornando um valor de data na forma de uma seqüência de caracteres, é isso que você está tentando fazer?:Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute)
Que pode ser a resposta para o seu problema para a adição de minutos.
No entanto, o erro que você está recebendo parece indicar um problema diferente.O código que você postou parece ser no código de trás(?). DataBinder.Eval
método irá normalmente ser utilizado em aspx para o controle da web como o controle Repeater.Nesse caso, você vai ter que passar o segundo parâmetro a DataBinder.Eval
como o nome de uma Propriedade pública.
Você pode verificar isso para maior clareza clique aqui
Você pode fazer a adição de minutos, enquanto retornando valor da propriedade