【问题标题】:Check All button unchecked c# asp.net [duplicate]检查所有按钮未选中c#asp.net [重复]
【发布时间】:2013-02-08 18:13:01
【问题描述】:

有没有一种方法可以检查我的“检查所有按钮”,然后,当我检查复选框列表中的一个项目时,“检查​​所有按钮”将被取消选中,但项目仍然被选中?

【问题讨论】:

标签: c# asp.net


【解决方案1】:

下面的就可以了:

<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;
}

【讨论】:

  • 发回除了更改复选框的选择状态之外什么都不做似乎过分了。
  • 发帖者没有说明是否使用JS,所以我给了他一个可行的选项。当然,使用 jQuery 来实现同样的效果在性能方面肯定是更好的选择。
  • 如果我有 2 个具有不同数据的复选框列表,每个复选框都有“全部检查”按钮,怎么样?
  • 您将获得两倍于我给您的代码。如果您的意思是说一个“全选”复选框应该适用于两个列表,请实现相同的代码,但适用于另一个 CheckBoxList。
猜你喜欢
  • 2020-12-23
  • 2011-08-23
  • 2016-07-15
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多