0

「すべてチェック」ボタンをチェックしてから、CheckBox リストのアイテムの 1 つをチェックすると、「すべてチェック ボタン」のチェックが解除されますが、アイテムはまだチェックされていますか?

4

1 に答える 1

0

以下はトリックを行います:

<asp:CheckBox ID="CheckAllCheckBox" runat="server" Text="Select All" AutoPostBack="true" />
<br />
<asp:CheckBoxList ID="MyCheckBoxList" runat="server" AutoPostBack="true">
    <asp:ListItem>One</asp:ListItem>
    <asp:ListItem>Two</asp:ListItem>
    <asp:ListItem>Three</asp:ListItem>
</asp:CheckBoxList>

そしてコード:

protected void Page_Load(object sender, EventArgs e)
{
    CheckAllCheckBox.CheckedChanged += CheckAllCheckBox_CheckedChanged;
    MyCheckBoxList.SelectedIndexChanged += MyCheckBoxList_SelectedIndexChanged;
}

void MyCheckBoxList_SelectedIndexChanged(object sender, EventArgs e)
{
    if (MyCheckBoxList.Items.Cast<ListItem>().Where(i => i.Selected).Count() == MyCheckBoxList.Items.Count)
        CheckAllCheckBox.Checked = true;
    else
        CheckAllCheckBox.Checked = false;
}

void CheckAllCheckBox_CheckedChanged(object sender, EventArgs e)
{
    SetCheckedState(CheckAllCheckBox.Checked);
}

private void SetCheckedState(bool setChecked)
{
    foreach (var item in MyCheckBoxList.Items.Cast<ListItem>().Where(i => i.Selected != setChecked))
        item.Selected = setChecked;
}
于 2013-02-08T18:31:32.580 に答える