Mon problème est assez bête mais je ne trouve pas la solution :/

Voila mon code C# :

Le DataBound

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
        protected void TableauDatas_ItemDataBound(object sender, DataGridItemEventArgs e)
        {
            ListItemType itemType = (ListItemType)e.Item.ItemType;
            if ((itemType != ListItemType.Header) &&
                (itemType != ListItemType.Footer) &&
                (itemType != ListItemType.Separator))
            {
                CheckBox chkConsulter = (CheckBox)e.Item.FindControl("chkConsulter");
                CheckBox chkEditer = (CheckBox)e.Item.FindControl("chkEditer");
                CheckBox chkSupprimer = (CheckBox)e.Item.FindControl("chkSupprimer");
                CheckBox chkAjouter = (CheckBox)e.Item.FindControl("chkAjouter");
 
                Module module = e.Item.DataItem as Module ;
 
                TypeRole typerole = TootaObjectBase<TypeRole>.FindByKid(new Guid(LstTyperole.SelectedValue));
 
                chkConsulter.Checked = typerole.isAuthorised(module.Name, "IsConsultation");
                chkEditer.Checked = typerole.isAuthorised(module.Name, "IsEdition");
                chkSupprimer.Checked = typerole.isAuthorised(module.Name, "IsSuppression");
                chkAjouter.Checked = typerole.isAuthorised(module.Name, "IsAddiction");
 
            }
 
        }
L'enregistrement :

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
protected void btEnregistrer_Click(object sender, EventArgs e)
        {
            TypeRole typerole = TootaObjectBase<TypeRole>.FindByKid(new Guid(LstTyperole.SelectedValue));
            for (int i = 0; i < TableauDatas.Items.Count; i++)
            {
                CheckBox chkC = (CheckBox)TableauDatas.Items[i].FindControl("chkConsulter");
                typerole.SetAuthorised(chkC.Checked, TableauDatas.DataKeys[i].ToString(), "IsConsultation");
                CheckBox chkE = (CheckBox)TableauDatas.Items[i].FindControl("chkEditer");
                typerole.SetAuthorised(chkC.Checked, TableauDatas.DataKeys[i].ToString(), "IsEdition");
                CheckBox chkS = (CheckBox)TableauDatas.Items[i].FindControl("chkSupprimer");
                typerole.SetAuthorised(chkC.Checked, TableauDatas.DataKeys[i].ToString(), "IsSuppression");
                CheckBox chkA = (CheckBox)TableauDatas.Items[i].FindControl("chkAjouter");
                typerole.SetAuthorised(chkC.Checked, TableauDatas.DataKeys[i].ToString(), "IsAddiction");
            }
            typerole.Save();
        }
Le code ASP.Net :

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
<Columns>
            <cc1:LocalizedBoundColumn FrText="Module" LocId="INFO_LB_MODULE" DataField="Name"></cc1:LocalizedBoundColumn>
                <ASP:TEMPLATECOLUMN runat="server" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center">
                    <HEADERTEMPLATE>
                        <cc1:LocalizedLabel id="lblConsulter" runat="server" LocId="INFO_LB_TAB_CONSULTER" frText="Consulter"></cc1:LocalizedLabel>
                    </HEADERTEMPLATE>
                    <ITEMTEMPLATE>
                        <asp:CheckBox id="chkConsulter" runat="server"></asp:CheckBox>
                    </ITEMTEMPLATE>
                </ASP:TEMPLATECOLUMN>
                <ASP:TEMPLATECOLUMN runat="server" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center">
                    <HEADERTEMPLATE>
                        <cc1:LocalizedLabel id="lblEditer" runat="server" LocId="INFO_LB_TAB_EDITER" frText="Editer"></cc1:LocalizedLabel>
                    </HEADERTEMPLATE>
                    <ITEMTEMPLATE>
                        <asp:CheckBox id="chkEditer" runat="server"></asp:CheckBox>
                    </ITEMTEMPLATE>
                </ASP:TEMPLATECOLUMN>
                <ASP:TEMPLATECOLUMN runat="server" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center">
                    <HEADERTEMPLATE>
                        <cc1:LocalizedLabel id="lblSupprimer" runat="server" LocId="INFO_LB_TAB_SUPPRIMER" frText="Supprimer"></cc1:LocalizedLabel>
                    </HEADERTEMPLATE>
                    <ITEMTEMPLATE>
                        <asp:CheckBox id="chkSupprimer" runat="server"></asp:CheckBox>
                    </ITEMTEMPLATE>
                </ASP:TEMPLATECOLUMN>
                <ASP:TEMPLATECOLUMN runat="server" HeaderStyle-HorizontalAlign="center" ItemStyle-HorizontalAlign="center">
                    <HEADERTEMPLATE>
                        <cc1:LocalizedLabel id="lblAjouter" runat="server" LocId="INFO_LB_TAB_AJOUTER" frText="Ajouter"></cc1:LocalizedLabel>
                    </HEADERTEMPLATE>
                    <ITEMTEMPLATE>
                        <asp:CheckBox id="chkAjouter" runat="server"></asp:CheckBox>
                    </ITEMTEMPLATE>
            </ASP:TEMPLATECOLUMN>
Le problème est qu'en sauvegardant, il ne prend en compte que si la première case est coché et met toute la ligne selon cette même case.

Par exemple si mon tableau ressemble à ça :

| Colonne 1 | Colonne 2 | Colonne 3 | Colonne 4 |
Ligne 1 | X | | | |
Ligne 2 | | X | | |
Ligne 3 | | | | |
Ligne 4 | X | | X | |
Ligne 5 | | | | X |

Après enregistrement il ressemblera à :


| Colonne 1 | Colonne 2 | Colonne 3 | Colonne 4 |
Ligne 1 | X | X | X | X |
Ligne 2 | | | | |
Ligne 3 | | | | |
Ligne 4 | X | X | X | X |
Ligne 5 | | | | |

(Tout droit réservé sur mes tableau )