/ / item.Selected est false lorsque la liste à cocher est désactivée. - c #, asp.net

item.Selected est false lorsque la liste à cocher est désactivée. - c #, asp.net

J'ai une liste à cocher où certains éléments sont désactivés pour certains utilisateurs.

entrer la description de l'image ici

Lorsque je clique sur "Enregistrer", le code ci-dessous est exécuté.

 foreach (ListItem item in myCheckBoxList.Items)
{
if (!item.Selected)
{
continue;
}
selectedValues.Add(item.Value);
}

Cependant, item.Selected est défini sur false pour les éléments désactivés même s'ils ont été sélectionnés.

Y a-t-il un moyen de contourner ceci?

Réponses:

1 pour la réponse № 1

Si la ListItems de CheckBoxList sont ajoutés avec aspnet, soitDans Code behind ou sur la page .aspx, ViewState veillera à ce que les cases à cocher désactivées soient cochées, même si elles ne sont pas envoyées au serveur.

    protected void Button1_Click(object sender, EventArgs e)
{
List<string> selectedValues = new List<string>();
Label1.Text = "";
foreach (ListItem item in myCheckBoxList.Items)
{
if (item.Selected)
{
selectedValues.Add(item.Value);
Label1.Text += item.Value + "<br>";
}
}
}

Et pour compléter l'exemple:

    <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
<br /><br />
<asp:CheckBoxList ID="myCheckBoxList" runat="server">
<asp:ListItem Text="Blueberry" Value="Blueberry"></asp:ListItem>
<asp:ListItem Text="Raspberry" Value="Raspberry"></asp:ListItem>
<asp:ListItem Text="Blackberry" Value="Blackberry"></asp:ListItem>
<asp:ListItem Text="Strawberry" Value="Strawberry" Enabled="false" Selected="True"></asp:ListItem>
<asp:ListItem Text="Gooseberry" Value="Gooseberry" Enabled="false" Selected="True"></asp:ListItem>
</asp:CheckBoxList>
<br /><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

3 pour la réponse № 2

Les entrées désactivées ne sont jamais publiées sur le serveur. Par conséquent, la valeur par défaut est définie, c’est-à-dire false. Vous pouvez utiliser HiddenField et associez cela à chaque case à cocher et définissez sa valeur en fonction de sa sélection.