C# 在ASP.NET中选中/取消选中复选框列表中的所有项目

C# 在ASP.NET中选中/取消选中复选框列表中的所有项目,c#,asp.net,C#,Asp.net,我有一个如下的清单 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { CheckBoxList1.Items.Add(new ListItem("Check/Uncheck All","0")); CheckBoxList1.Items.Add(new ListItem("A","1")); CheckBoxList1.Items.Ad

我有一个如下的清单

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        CheckBoxList1.Items.Add(new ListItem("Check/Uncheck All","0"));
        CheckBoxList1.Items.Add(new ListItem("A","1"));
        CheckBoxList1.Items.Add(new ListItem("B","2"));
        CheckBoxList1.Items.Add(new ListItem("C", "3"));
        CheckBoxList1.Items.Add(new ListItem("D", "4"));
    }        
}
我希望无论何时选中第一项,都能选中其余项;无论何时取消选中,都能取消选中其余项。用户还可以单独选择每个项目

我想在没有JavaScript或JQuery的情况下使用代码隐藏来实现这一点。

试试这个

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
    string result = Request.Form["__EVENTTARGET"];
    int index1 = int.Parse(result.Substring(result.IndexOf("$") + 1));
    if (index1 == 0)
    {
        bool tf = CheckBoxList1.Items[index1].Selected ? true : false;
        CheckUncheckAll(tf);
    }
}
void CheckUncheckAll(bool tf)
{
    foreach (ListItem item in CheckBoxList1.Items)
    {
        item.Selected = tf;
    }
}

在.aspx页面中,请为复选框列表添加autopostback=true

然后请添加此事件。我已经检查过了

Private Sub CheckBoxList1_SelectedIndexChsanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBoxList1.SelectedIndexChanged
    Dim result As String = Request.Form("__EVENTTARGET")
    Dim checkedBox As String() = result.Split("$"c)
    Dim index As Integer = Integer.Parse(checkedBox(checkedBox.Length - 1))
    If CheckBoxList1.Items(index).Text = "Check/Uncheck All" Then
        Dim Chkbool As Boolean = CheckBoxList1.Items(index).Selected
        For Each item In CheckBoxList1.Items
            item.selected = Chkbool
        Next
    End If
End Sub

有一种使用jquery在asp复选框列表中创建全选项的通用方法。 使用“全选”功能,表单上可以有多达个复选框列表控件。 你只需要确定一下

您的复选框列表具有allowSelectAll类 您将ListItem添加到复选框列表中,以允许用户选择 一切都是有价值的 chkBoxList.Items.Insert0,新ListItemAll,All

您只需要以下代码

<script>
    $('.allowSelectAll :checkbox[value=All]').click(function () {
        var toggle = this.checked;
        $(this).closest('.allowSelectAll').find(":checkbox").attr("checked", toggle);
    });
</script>
在下面的代码spinet中,我有4个复选框列表

<div >
<label>Experience 1</label>
<asp:CheckBoxList ID="chklstExp1" runat="server"  CssClass="allowSelectAll">
</asp:CheckBoxList>

<label>Experience 2</label>
<asp:CheckBoxList ID="chklstExp2" runat="server" CssClass="allowSelectAll">
</asp:CheckBoxList>

<label>Experience 3</label>
<asp:CheckBoxList ID="chklstExp3" runat="server" CssClass="allowSelectAll">
</asp:CheckBoxList>

<label>Location</label>
<asp:CheckBoxList ID="chklstLocation" runat="server" CssClass="allowSelectAll">
</asp:CheckBoxList>

<asp:Button runat="server" ID="btnShowReport" OnClick="btnShowReport_Click" Text="Show Report"/>
</div>

有了这段代码,您可以从C代码后台访问复选框,并可以选中/取消选中它们,甚至启用/禁用它们。希望能有所帮助

foreach (ListItem item in CheckBoxList.Items) {
    item.Selected = true;
    item.Enabled = true;
}

要使项目为假,您需要执行以下操作:

checkList.ClearSelection();
要使项目为真,请执行以下操作:

foreach (var item in checkList.Items.Cast<ListItem>().Where (li => li.Value == "1" || li.Value == "3" || li.Value == "5"))
{
   item.Selected = true;
}
全部核对

为了所有人


我希望这对我有用,但这行'int index1=int.Parseresult.Substringresult.IndexOf$+1'会引发一个错误,即字符串格式错误。
foreach (var item in checkList.Items.Cast<ListItem>().Where (li => li.Value == "1" || li.Value == "3" || li.Value == "5"))
{
   item.Selected = true;
}
foreach (ListItem item in CheckBoxList.Items)
{
    item.Selected = true;    
}
 CheckBoxList.ClearSelection();