[C#] Fusionner des cellules dans le header d’un gridview
Bien qu’il soit simple de fusionner des cellules d’un Gridview en C# le designer de VS ne nous le permet pas.
Pas le choix, il va falloir aligner quelques lignes de code.
Le code suivant va nous permettre de fusionner des cellules (équivalent d’un colspan en html) dans le header (en-tête) d’un Gridview.
protected void GridView1_DataBound(object sender, EventArgs e){ try { GridView1.HeaderRow.Cells[0].ColumnSpan = 2; GridView1.HeaderRow.Cells[1].Visible = false; } catch { //On ne fait rien le gridview est vide. //pour éviter ce type d'exception il suffit de vérifier que le gridview n'est pas vide } } |
Le code précédent est exécuté lorsque l’événement databound du gridview est déclenché ( la liaison de données au gridview est terminée ).
Placer ce code dans l’événement databound du gridview permet de conserver le colspan quelque soit l’événement ayant eu lieu sur la gridview (sorting, pageindexchanging, rowediting etc…)
Dans l’exemple ci-dessus la cellule 0 (Cells[0]) de la ligne Header (HeaderRow) est fusionnée à la cellule 1 (ColumnSpan = 2).
La cellule 1 ne doit quand à elle plus être affichée (Cells[1].Visible = false;).
Il ne reste plus qu’à insérer un label, un bouton … dans la cellule 0.
GridView1.Row[5].Cells[0].ColumnSpan = 2; |
(on pourrait éventuellement fusionner des cellules d’une ligne même si l’utilité reste plus limitée).
Vous aimez le CSharp? Alors lisez l’article suivant :