Bonjour,
Je travaille actuellement sur VS 2010, MVC 3 + Razor.
Je dois créer un tableau à partir d'une collection. Pour ce faire, j'ai décidé d'utiliser la librairie WebGrid.
Je suis parvenu à faire pas mal de choses.. sauf que j'ai une petite subtilité:
l'une de mes colonnes (header) contient 2 sous-colonnes.
en html on ferait un:
Code : 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
<table>
            <tr>
                <th rowspan="2">
                    colonne 1
                </th>
                <th colspan="2">
                    colonne 2
                </th>
            </tr>
            <tr>
                <th>
                    sous-colonne2-1
                </th>
                <th>
                     sous-colonne2-2
                </th>
            </tr>
</table>
grosso-modo...
Je ne sais pas comment gérer ce genre d'affichage avec WebGrid.
Code : 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
@grid.GetHtml(
        htmlAttributes: new { id = "List" },
        tableStyle: "grid", 
        headerStyle: "head", 
        alternatingRowStyle: "alt", 
        caption: "WebGrid",
        columns: grid.Columns(
           grid.Column("colonne1", header:"colonne1"),
            grid.Column(header:"Colonne2", format: (item) =>
            {
                string temp = "<div style='text-align: left;color: ed;height:120px;" +
                    "width: 300px; padding-right: 1em; overflow: auto; overflow-x:hidden;'>";
                var sub = new WebGrid(item.SousItems);
                temp += sub.GetHtml(
                    columns:sub.Columns(
                        sub.Column("sous-colonne-2-1", "sous-colonne-2-1", format: (subitem) =>
                        {
                            string temp2 = string.Empty;
                            foreach (var subs in item.LesItemps)
                            {
                                temp2 += subs.val1 + "<br />";
                            }
                            return new HtmlString(temp2);
                        }),
                        sub.Column("CAS", "CAS", format:(subitem)=>
                            {
                                string temp3 = string.Empty;
                                foreach (var subs in item.LesItemps)
                                {
                                    temp3 += subs.val2 + "<br />";
                                }
                                return new HtmlString(temp3);
                            })
                    ));
                temp += "</div>";
                return new HtmlString(temp);
            })
       )) 
 }
Enfin voilà, j'ai modifié le nom des champs, peut-etre maladroitement... mais ce code fonctionne, sauf que le nom des colonnes s'affiche pour chaque ligne.
Dans les sous colonnes doivent s'afficher une liste d'éléments (chaque ligne en contienne plusieurs).
Source:
http://www.dreamincode.net/forums/to...ide-a-webgrid/
J'aimerais en fait faire quelque chose comme dans l'exemple donnée, sauf sans ré-afficher le nom des colonnes à chaque ligne.
Quelqu'un aurait une idée? Sinon... Si ce n'est pas possible, je le ferai à la main, c'est juste que je trouve dommage de ne pas utiliser ces petites librairies sympas qui existent déjà.
Merci d'avance a ceux qui essaieront de m'aider.
PS: Désolé pour mon orthographe :s