[Débutant] Problème de checkbox dans un DataGrid
Mon problème est assez bête mais je ne trouve pas la solution :/
Voila mon code C# :
Le DataBound
Code:
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:
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:
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 :P)