Comment accéder à l'élément lié aux données pendant ItemDataBound?
Je veux obtenir l'élément qui est lié aux données, au cours de l'événement ItemDataBound d'un asp:repeater.
J'ai essayé le suivant (ce qui était un refusés de répondre dans un stackoverflow question):
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Object dataItem = e.Item.DataItem;
...
}
mais e.Item.DataItem
est null.
Comment puis-je accéder à l'élément de données lié au cours de l'événement appelé ItemDataBound. Je suppose que l'événement ItemDataBound se produit lorsqu'un élément est lié aux données.
Je veux arriver à l'objet afin que je puisse prendre des mesures pour contrôler la façon dont il est affiché, en outre, l'objet peut avoir d'autres propriétés utiles de me laisser enrichir la façon dont il est affiché.
Réponse
Outil avait le droit de réponse. La réponse est que e.Item.Data
n'est valide que lorsque e.Item.ItemType
est (Item, AlternatingItem). D'autres fois, elle n'est pas valide. Dans mon cas, j'ai été reçu ItemDataBound événements au cours de l'en-tête (ou pied de page) lignes, où il n'y a pas de DataItem:
protected void myRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
//if the data bound item is an item or alternating item (not the header etc)
if (e.Item.ItemType != ListItemType.Item &&
e.Item.ItemType != ListItemType.AlternatingItem)
{
return;
}
Object dataItem = e.Item.DataItem;
...
}
source d'informationauteur Ian Boyd
Vous devez vous connecter pour publier un commentaire.
Dès le départ, j'aurais deviner vous avez besoin de ceci:
Après tout, l'élément lui-même pourrait représenter un en-tête ou le pied de page ligne.
Je voulais juste ajouter que je n'ai réalisé cela en procédant comme suit:
Pour répéteur
Peut être modifié afin de:
Si vous faites affaire avec un asp:ListView, vous pouvez faire quelque chose comme ceci:
(Le titre de la question n'est pas fait mention de l'asp:repeater.. j'ai donc pensé qu'il pourrait être utile de publier le code pour l'asp:listview)
Pour un répéteur avec un modèle personnalisé de liaison; vous pouvez utiliser le modèle ci-dessous. J'ai utilisé pour créer une table qui se brise chaque élément de données dans les deux lignes pour l'impression.
Utilisation dynamique