3 votes

DropDownList dans GridView asp.net

Je veux ajouter une liste déroulante à chaque entrée dans un GridView.

Au niveau du code backend, j'ai le code suivant pour lier un datatable à cette liste déroulante.

DataTable reader = BusinessLayer.BusinessLayerHandler.GetBankList();
DropDown.DataSource = reader;
DropDown.DataTextField = "NAME";
DropDown.DataValueField = "NAME";
DropDown.DataBind();

Mon problème est que la liste déroulante créée dans le GridView (DropDown) n'est pas trouvée au niveau du code backend comme si elle n'existait pas.

Que puis-je faire ?

8voto

Stephan Bauer Points 3827

Le DropDownList sera créé pour chaque élément du GridView, donc il ne peut pas y avoir un champ pour les listes déroulantes. Cependant, vous pouvez récupérer le DropDownList pour une seule ligne (par exemple dans l'événement RowDataBound ou RowCreated)

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{ 
  if(r.Row.RowType == DataControlRowType.DataRow)
  {
    DropDownList dropdown = e.Row.FindControl("DropDown") as DropDownList;
    if(dropdown != null)
    { /*  votre code */ }
  }
}

Ou vous pouvez utiliser un événement du DropDownList lui-même et accéder au paramètre sender.

protected void dropdownLoad(object sender, EventArgs e)
{ 
  DropDownList dropdown = sender as DropDownList;
  if(dropdown != null)
  { /*  votre code */ }
}

-1voto

Parth Patel Points 250

Vous pouvez trouver dropdown dans l'événement de liaison de grille en utilisant grid.findcontrol.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X