Introduction
Je me suis demmandé comment je pourait faire pour mettre un GridView dans un TemplateField sans avoir a faire de code... alors je me suis dit qu'ont pouvais Bindé un control sur un control... C'est ce que j'ai fait...
Prerequis :
- Visual Studio 2005
- Une connaissance de base de VS 2005 / ASP.NET 2.0
Contenu
Dans ce tutorial, je vais créer une liste de post et la liste des catégories ascocié à chacun des post (Question de recycler ma BD).
Premièrement il faut créer un GridView que nous nommerons "gv_Posts".
Il faut, ensuite, ajouter un TemplateField, nommons le "Catégories".
Maintenant passons en mode édition du TemplateField :
il faut ajouter un HiddenField, "hf_id", dans le ItemTemplate et le Bind avec le champ voulu. Dans l'exemple présent je le Bind à ID.
Ajoutons maintenant un GridView, "gv_categories", en dessous du HiddenField.
Dans le DataSource, ajouter une clause WHERE Bindé sur le HiddenField hf_id.
Maintenant, il ne reste qu'a Skiner la page.
- Enlever le Header (ShowHeader = false) de gv_categories, sinon il ce répetera de ligne en ligne...
- Pour des fin rapide, j'ai utilisé [ Auto Format / Professional ].
TIPS: mettre HtmlEncode à false pour formatter une colonne date ;)
Conclusion
C'est assez simple d'imbriquer 2 GridView un dans l'autre sans avoir à faire de code...
Bien que cette façon n'optimise peut-être pas les performances, pour des petit/moyen projets dans un environement de production c'est bien...