Mon problème est assez bête mais je ne trouve pas la solution :/
Voila mon code C# :
Le DataBound
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
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"); } }
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 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 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.
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>
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)
Partager