L'équivalent de la fonction Eval(“champ”) dans ASP.NET Répéteur ItemDataBound événement?
Je veux faire l'équivalent de la fonction Eval("champ") dans un ASP.NET répéteur ItemDataBound Événement, mais je suis pas sûr de ce cast e.De l'élément.DataItem comme. Le type de source de données peut varier comme c'est le code réutilisable dans un contrôle personnalisé. Alors, comment puis-je accéder à un champ dans l'e.De l'élément.DataItem par nom de champ (une chaîne)?
Idéalement, je veux faire quelque chose comme:
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
xxx item = (xxx)e.Item.DataItem;
string fieldValue = item("fieldname");
}
}
OriginalL'auteur John | 2011-06-14
Vous devez vous connecter pour publier un commentaire.
Si vous ne savez pas de quel type est au moment de la compilation, votre seule option est de les traiter comme un objet (qui est par défaut le type de retour de la
DataItem
propriété).Vous pouvez essayer de l'utiliser:
Vous êtes toujours coincé avec un objet à la fin de cet appel, mais (en supposant que l'appel est un succès) vous saurez que
item
possède une propriété nomméefieldname
. Je ne sais pas si cela aide. Peut-être mettre à jour votre question avec plus de détails au sujet de ce que vous essayez de faire.OriginalL'auteur dariom
au lieu de
xxx item = (xxx)e.Item.DataItem;
l'écrire:
ou peut-être:
var item = e.Item.DataItem as TypeItem;
et puisitem.FieldName
OriginalL'auteur Amr Elgarhy