Question :
Fusionnez les cellules dans un DataGridView pour un affichage des données consolidées sans lignes en double. L'objectif est de convertir une grille avec des valeurs d'en-tête répétées sur les lignes en une grille où les valeurs d'en-tête s'étendent sur les cellules fusionnées représentant les lignes répétées.
Solution :
Ceci peut être réalisé en combinant le formatage de cellule personnalisé et la gestion des événements de peinture.
Trouver les valeurs de cellules en double :
Tout d'abord, définissez une méthode pour déterminer si la cellule actuelle a la même valeur que la cellule au-dessus :
<code class="language-csharp">bool IsTheSameCellValue(int column, int row) { DataGridViewCell cell1 = dataGridView1[column, row]; DataGridViewCell cell2 = dataGridView1[column, row - 1]; if (cell1.Value == null || cell2.Value == null) { return false; } return cell1.Value.ToString() == cell2.Value.ToString(); }</code>
Dessin de cellule personnalisé :
Dans l'événement de dessin de cellules de DataGridView, supprimez les bordures des cellules avec des valeurs en double :
<code class="language-csharp">private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { e.AdvancedBorderStyle.Bottom = DataGridViewAdvancedCellBorderStyle.None; if (e.RowIndex < 1 || e.ColumnIndex < 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.AdvancedBorderStyle.Top = DataGridViewAdvancedCellBorderStyle.None; } else { e.AdvancedBorderStyle.Top = dataGridView1.AdvancedCellBorderStyle.Top; } }</code>
Format de cellule personnalisé :
Dans les événements au format cellule, masquez les valeurs de ligne en double :
<code class="language-csharp">if (e.RowIndex == 0) return; if (IsTheSameCellValue(e.ColumnIndex, e.RowIndex)) { e.Value = ""; e.FormattingApplied = true; }</code>
Autres paramètres :
Désactivez la génération automatique de colonnes pour éviter la création de colonnes indésirables :
<code class="language-csharp">dataGridView1.AutoGenerateColumns = false;</code>
Résultat :
En mettant en œuvre les étapes ci-dessus, DataGridView affichera les données avec les cellules fusionnées, éliminera les valeurs d'en-tête en double et présentera une vue consolidée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!