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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top