Hello,
Sur une application web ASP.net, je dois faire (faire) une évolution assez simple d'un composant web; il s'agit de fusionner des cellules selon certaines règles métier.
Les développeurs m'ont remonté le fait qu'il était impossible de le faire du fait de l'utilisation du composant RadGridView de Telerik.
Surpris, j'ai testé moi-même, et en effet ça ne fonctionne pas pour les colonnes, mais ça fonctionne pour les lignes, en tout cas "nativement".
Avant d'envisager un retour arrière sur l'utilisation de Telerik dans le composant (car il y a quand même une valeur ajoutée malgré cela...), j'aimerai m'assurer que c'est bien une impasse.
Pour info, sur le forum de Telerik je lis ceci :
Mais puisque ça marche pour les lignes, je me dis qu'une fourberie existe peut-être pour contourner le problème.Envoyé par Telerik
Voici le code (assez basique) que j'ai utilisé pour reproduire le cas :
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 void RadGrid1_DataBound(object sender, EventArgs e) { try { // Merge horizontally for (int rowIndex = RadGrid1.Items.Count - 2; rowIndex >= 0; rowIndex--) { GridDataItem gvRow = RadGrid1.Items[rowIndex]; GridDataItem gvPreviousRow = RadGrid1.Items[rowIndex + 1]; for (int cellCount = 0; cellCount < gvRow.Cells.Count; cellCount++) { if (gvRow.Cells[cellCount].Text == gvPreviousRow.Cells[cellCount].Text) { if (gvPreviousRow.Cells[cellCount].RowSpan < 2) { gvRow.Cells[cellCount].RowSpan = 2; } else { // Fonctionne gvRow.Cells[cellCount].RowSpan = gvPreviousRow.Cells[cellCount].RowSpan + 1; } gvPreviousRow.Cells[cellCount].Visible = false; } } } // Merge vertically foreach (GridDataItem row in RadGrid1.Items) { TableCell previousCell = null; for (int cellCount = 0; cellCount < row.Cells.Count; cellCount++) { if (previousCell == null) { previousCell = row.Cells[cellCount]; } else { if (row.Cells[cellCount].Text.Equals(previousCell.Text)) { // Ne fonctionne pas !!! previousCell.ColumnSpan++; //row.Cells[cellCount].Visible = false; } } previousCell = row.Cells[cellCount]; } } } catch (Exception) { } }
Je précise, au cas où, que ce code fonctionne bien avec un composant ASP.net GriedView.
Merci d'avance !
Partager