2009-05-18 9 views
2

J'essaie d'ajouter une ligne de pied de page DropDownLists à mon contrôle GridView. Le problème est que je ne sais pas combien de colonnes seront dans mon DataSource au moment de la conception, donc j'essaie d'utiliser AutoGenerateColumns = true et de ne pas spécifier les modèles de colonnes. Par conséquent, la façon dont j'ajoute les contrôles DropDownList au pied de page est dans le code dynamiquement sur l'événement DataBound de GridView.Ajoutez dynamiquement un pied de page à ASP.NET GridView

Cela fonctionne très bien, sauf que je voudrais faire quelque chose avec le SelectedItem de chacune des DropDownLists lorsque les utilisateurs cliquent sur un bouton. Ces contrôles ajoutés dynamiquement ne semblent plus exister sur le dos de l'utilisateur en cliquant sur le bouton, je crois que le problème est dû au fait que je ne spécifie pas la balise runat = "server" sur les contrôles DropDownList.

Existe-t-il une manière différente d'ajouter ces listes déroulantes à un FooterTemplate sans spécifier toutes les colonnes afin que je puisse accéder à leurs SelectedItems lorsque l'utilisateur clique sur un bouton de la page?

+0

Pouvez-vous publier le code que vous utilisez pour instancier les contrôles. – Lazarus

Répondre

2

Vous avez partiellement raison - les contrôles ajoutés dynamiquement n'existent plus après la publication. Ils ne seront pas rajoutés jusqu'à ce que l'événement DataBound soit exécuté. Le problème est que les événements Databinding se produisent après événements de contrôle, c'est-à après l'événement Click de votre bouton. Ainsi, à l'étape du cycle de vie de la page où l'événement click est géré, ces contrôles n'ont pas encore été recréés.

Here's a related question which might have some useful information.

0

vous devez créer un ADDHANDLER:

dim dropdownlistname as new Dropdownlist 
Addhandler dropdownlistname.selected_indexchanged,AddressOf dropdownlistname_SelectedIndexChanged 

alors vous devez créer un sous comme suit:

Protected Sub dropdownlistname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddldept.SelectedIndexChanged 

'Insert Code here 

End sub 

donc ce que cela fait est qu'il crée un événement et a déclaré une adresse pour aller pour cet événement. Vous devriez être capable d'écrire n'importe quel code dans cet événement.

Questions connexes