2008-11-20 7 views
7

J'ai une situation où je dois travailler avec une grille de données et l'ajout de colonnes dynamiquement dans PageInit que la grille a quelques requêtes conditionnelles qu'il doit gérer. Je me déplace facilement avec BoundColumns, et ButtonColumns, ceux-ci sont faciles. Le problème est avec la création d'un TemplateColumn via le code. J'ai trouvé des exemples sur la création d'une classe personnalisée qui ajoute dynamiquement des contrôles en créant une classe qui utilise une implémentation de ITemplate. Cela fonctionne, cependant, je me bats avec la façon de databind éléments.ITemplate et DataGrid Colonne Codebehind

Dans ma grille j'aurais utilisé <% = DataBinder.Eval (Container.DataItem, "MyValue")%> ou similaire, mais ce n'est pas une option ici. Le conteneur à l'intérieur de ITemplate n'a pas non plus de propriété d'élément de données, donc je ne peux pas lier ici. N'importe qui a des conseils ou des liens qui pourraient aider, je ne trouve tout simplement pas les bonnes choses dans google.

Répondre

8

Vous pouvez attacher un gestionnaire d'événements à l'événement DataBinding des contrôles que vous créez dans ITemplate.InstantiateIn comme dans this MSDN Article. L'expéditeur sera le contrôle et la propriété NamingContainer sera le DataGridItem, qui a une référence au DataItem que vous pouvez utiliser pour obtenir toutes les données dont vous avez besoin.

+0

Génial! C'est l'article que je cherchais. Quelle PITA majeur pour réaliser ce but .... –

+0

+1 pour le lien utile, il est également bon de jeter un oeil à celui-ci http://aspalliance.com/1125_Dynamically_Templated_GridView_with_Edit_Delete_and_Insert_Options.3 –

Questions connexes