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 :
Citation Envoyé par Telerik
This functionality is currently not supported by our RadGridView. We will consider it in our future development plans if more customers ask for it.
Mais puisque ça marche pour les lignes, je me dis qu'une fourberie existe peut-être pour contourner le problème.

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 !