C# 选中复选框列表中的所有复选框

C# 选中复选框列表中的所有复选框,c#,asp.net,checkbox,checkboxlist,C#,Asp.net,Checkbox,Checkboxlist,我的网页上有一个复选框和一个复选框列表。 如果选中了复选框,则应选中复选框列表中的所有复选框,如果未选中复选框,则同样应取消选中复选框中的所有复选框 .aspx代码 <asp:CheckBoxList ID="CheckBoxList1" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow"> <asp:ListItem>Item A</asp

我的网页上有一个
复选框
和一个
复选框
列表。
如果选中了
复选框
,则应选中
复选框列表
中的所有
复选框
,如果未选中
复选框
,则同样应取消选中
复选框
中的所有
复选框

.aspx代码

<asp:CheckBoxList ID="CheckBoxList1" runat="server" 
            RepeatDirection="Horizontal" RepeatLayout="Flow">
            <asp:ListItem>Item A</asp:ListItem>
            <asp:ListItem>Item B</asp:ListItem>
            <asp:ListItem>Item C</asp:ListItem>
            <asp:ListItem Selected="True">Item D</asp:ListItem>
            <asp:ListItem>Item E</asp:ListItem>
            <asp:ListItem>Item F</asp:ListItem>
            <asp:ListItem>Item G</asp:ListItem>
        </asp:CheckBoxList>
<asp:CheckBox ID="allChkBox" Text="Select all" runat="server" 
                oncheckedchanged="allChkBox_CheckedChanged" />

我已经有一段时间没有涉足ASP.NET了,但是每次请求时,您的
prevSelection
字段都将初始化为
false
。该值不会在请求之间持久化。因此,您需要将其存储在视图状态或缓存中,并从那里将其加载到事件处理程序中,或者,更好的是,将方法更改为如下所示:

protected void allChkBox_CheckedChanged(object sender, EventArgs e)
{
    foreach (ListItem chkitem in CheckBoxList1.Items)
    {
        chkitem.Selected = allChkBox.Selected;
    }
}

我已经有一段时间没有涉足ASP.NET了,但是每次请求时,您的
prevSelection
字段都将初始化为
false
。该值不会在请求之间持久化。因此,您需要将其存储在视图状态或缓存中,并从那里将其加载到事件处理程序中,或者,更好的是,将方法更改为如下所示:

protected void allChkBox_CheckedChanged(object sender, EventArgs e)
{
    foreach (ListItem chkitem in CheckBoxList1.Items)
    {
        chkitem.Selected = allChkBox.Selected;
    }
}

我更喜欢使用客户端脚本来实现类似的功能,这样您的页面就不必进行回发

如果这是一种可能性,尝试在单击时启动javascript函数来执行循环并选择。。。差不多

<script type="text/javascript">
checked=false;
function checkedAll (frm1) {
    var aa= document.getElementById('frm1');
     if (checked == false)
          {
           checked = true
          }
        else
          {
          checked = false
          }
    for (var i =0; i < aa.elements.length; i++) 
    {
           if(aa.elements[i].type == 'checkbox') { 
             aa.elements[i].checked = checked;
           }
    }
 }
</script>

选中=错误;
功能检查全部(frm1){
var aa=document.getElementById('frm1');
如果(选中==false)
{
选中=真
}
其他的
{
选中=错误
}
对于(var i=0;i
我更喜欢将客户端脚本用于类似的内容,这样您的页面就不必进行回发

如果这是一种可能性,尝试在单击时启动javascript函数来执行循环并选择。。。差不多

<script type="text/javascript">
checked=false;
function checkedAll (frm1) {
    var aa= document.getElementById('frm1');
     if (checked == false)
          {
           checked = true
          }
        else
          {
          checked = false
          }
    for (var i =0; i < aa.elements.length; i++) 
    {
           if(aa.elements[i].type == 'checkbox') { 
             aa.elements[i].checked = checked;
           }
    }
 }
</script>

选中=错误;
功能检查全部(frm1){
var aa=document.getElementById('frm1');
如果(选中==false)
{
选中=真
}
其他的
{
选中=错误
}
对于(var i=0;i
与其在函数外使用变量,不如使用复选框本身:

protected void allChkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkbox = sender;

    foreach (ListItem chkitem in CheckBoxList1.Items)
    {
        chkitem.Selected = chkbox.Selected;
    }
}

与其在函数外部使用变量,不如使用复选框本身:

protected void allChkBox_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkbox = sender;

    foreach (ListItem chkitem in CheckBoxList1.Items)
    {
        chkitem.Selected = chkbox.Selected;
    }
}

你可以用linq这样做

var allChecked = (from ListItem item in CheckBoxList1.Items 
                              where item.Selected 
                              select int.Parse(item.Value)).ToList();


  var all = (from ListItem item in CheckBoxList1.Items 

                                  select int.Parse(item.Value)).ToList();

你可以用linq这样做

var allChecked = (from ListItem item in CheckBoxList1.Items 
                              where item.Selected 
                              select int.Parse(item.Value)).ToList();


  var all = (from ListItem item in CheckBoxList1.Items 

                                  select int.Parse(item.Value)).ToList();
函数CheckUnCheckAll()
{
var list=document.getElementById(“”);
var chklist=list.getElementsByTagName(“输入”);
对于(var i=0;i
函数CheckUnCheckAll()
{
var list=document.getElementById(“”);
var chklist=list.getElementsByTagName(“输入”);

对于(var i=0;i如果我正确理解了需求,该Iif如何!)?这将使复选框列表控件中的所有项目
在呈现以下内容时默认处于选中状态:

受保护的无效页面加载(对象发送方,事件参数e)
{
如果(第IsPostBack页)返回;
LoadCountryList();
}
私有void LoadCountryList()
{
_ctx=新的PayLinxDataContext();
chkCountries.DataSource=_ctx.Countries.OrderBy(c=>c.Name);
chkCountries.DataBind();
foreach(chkCountries.Items中的ListItem项目)
{
item.Selected=true;
}

}
如果我正确理解了该要求,该Iif如何!)?这将使复选框列表控件中的所有项目在呈现以下内容时默认选中:

受保护的无效页面加载(对象发送方,事件参数e)
{
如果(第IsPostBack页)返回;
LoadCountryList();
}
私有void LoadCountryList()
{
_ctx=新的PayLinxDataContext();
chkCountries.DataSource=_ctx.Countries.OrderBy(c=>c.Name);
chkCountries.DataBind();
foreach(chkCountries.Items中的ListItem项目)
{
item.Selected=true;
}

}
你能提供你的aspx代码吗?好的..其他人提供了答案。我建议..你应该在客户端javascript中这样做,不需要回发。你能提供你的aspx代码吗?好的..其他人提供了答案。我建议..你应该在客户端javascript中这样做,不需要回发。需要检查html输入类型..aa.elements[I].type==“checkbox”我想用一个复选框而不是点击按钮来选中/取消选中所有复选框。但是,
CheckBoxAll
似乎没有客户端功能,可以检测是否选中了
复选框。可以用
复选框来完成吗,即如果
CheckBoxAll,它将自动选中所有其他复选框。需要检查html输入类型..aa.elements[i].type==“checkbox”我想用一个复选框而不是点击按钮来选中/取消选中所有复选框。但是,
CheckBoxAll
似乎没有客户端功能,可以检测是否选中了
复选框。可以用
复选框来完成吗,即如果
CheckBoxAll”,则应自动选中所有其他复选框。