web-dev-qa-db-fra.com

Comment accéder aux champs de source de données dans un événement ItemDataBound Répéteurs ASP.NET?

J'ai un contrôle Repeater lié au résultat d'une requête Linq.

Je souhaite obtenir la valeur de l'un des champs de la source de données dans l'événement ItemDataBound, mais je ne suis pas sûr de savoir comment procéder.

22
Peter

Vous pouvez utiliser: e.Item.DataItem.

Exemple: Repeater.ItemDataBound Event

// This event is raised for the header, the footer, separators, and items.
void R1_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
{
  // Execute the following logic for Items and Alternating Items.
  if (e.Item.ItemType == ListItemType.Item ||
      e.Item.ItemType == ListItemType.AlternatingItem)
  {
    if (((Evaluation)e.Item.DataItem).Rating == "Good")
    {
      ((Label)e.Item.FindControl("RatingLabel")).Text= "<b>***Good***</b>";
    }
  }
} 
29
Brian Hedler

Selon le DataSource ... Si votre DataSource est un DataTable, alors votre DataItem contient un DataRowView:

protected void rptMyReteater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        Button b = e.Item.FindControl("myButton") as Button; 
        DataRowView drv = e.Item.DataItem as DataRowView;
        b.CommandArgument = drv.Row["ID_COLUMN_NAME"].ToString();
    }
}
40
Sprotch

Les données utilisées pour l'élément actuel peuvent être trouvées dans EventArgs.

RepeaterItemEventArgs e

e.Item.DataItem
7
Robin Day