Question

Assez nouveau pour C# Je dois convertir une valeur pour ajouter des minutes à une date, mais elle peut être nulle.Voici comment je fais :

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
{
    " - "
}

Voici l'erreur que j'obtiens :

Liaison de données :'System.Data.DataRowView' ne contient pas les propriétés appelées :'17/04/2014 13:30:00'.

Alors, le chèque est-il faux ?Ou l'erreur est ailleurs ?

Était-ce utile?

La solution

Essayez d'utiliser le code en aspx à l'endroit où vous avez besoin de la chaîne avec la date ou " - "

<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value
    ? " - "
    : Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %>

Problème dans votre code dans lequel vous êtes DataBinder.Eval transmettez la deuxième chaîne de paramètres avec la date mais pas le nom de la propriété.

Autres conseils

En supposant que la méthode « Eval » vous renvoie une valeur de date sous la forme d'une chaîne, est-ce ce que vous essayez de faire ?:Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute)Cela pourrait être la réponse à votre problème d'ajout de minutes.

Cependant, l'erreur que vous obtenez semble indiquer un problème différent.Le code que vous avez publié semble être en code derrière (?). DataBinder.Eval La méthode sera généralement utilisée dans aspx pour le contrôle Web comme le contrôle Répéteur.Auquel cas vous devrez passer le deuxième paramètre à DataBinder.Eval comme nom d'une propriété publique.

Vous pouvez vérifier ceci pour plus de clarté, cliquez sur ici

Vous pouvez faire l'ajout de minutes tout en renvoyant la valeur de la propriété

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top