在asp.net CheckBoxList中选择所有项目

时间:2011-03-22 20:08:46

标签: c# jquery asp.net checkboxlist selectall

ASP.NET和C#。

我想要一个带有“全选”项目的CheckboxList。

  • 当这个特殊项目是 选中,将选中所有其他人 太。
  • 从中删除选择时 这个项目,也是所有人 其他项目。
  • 检查/取消选中 任何其他物品只会有一个 对该特定项目的影响 无论选择状态如何 “全选”项目。

我正在寻找一个jquery解决方案。

以下是我的代码隐藏中的数据绑定代码:

IList<Central> Centrals = new CentralProvider().GetAllCentralsAsList();
Centrals.Insert(0, new Central(){Central_ID = 999, Central_Name = "Select All"});
CentralChecks.DataSource = Centrals;
CentralChecks.DataTextField = "Central_Name";
CentralChecks.DataValueField = "Central_ID";
CentralChecks.DataBind();

这是标记:

<div class="CentralDiv" id="CentralDiv">
    <h2>Centrals:</h2>
    <span>
        <asp:TextBox ID="CentralTextBox" runat="server" CssClass="textbox">Centrals</asp:TextBox>
        <img id="CentralArrow" src="images/down_arrow.jpg" style="margin-left: -22px; margin-bottom: -5px" />
    </span>
    <div id="CentralEffect" class="ui-widget-content">
        <asp:CheckBoxList ID="CentralChecks" runat="server" onclick="GetSelectedCentralValue();">
        </asp:CheckBoxList>
    </div>
</div>

请注意,页面上有多个复选框列表,因此任何解决方案都必须牢记这一点。

5 个答案:

答案 0 :(得分:12)

您可以使用任何复选框列表,只需将CheckBoxList的css类添加到每个CheckBoxList控件:

$('.myCheckBoxList :checkbox').eq(0).click(function() { 
    var toggle = this.checked;
    $('.myCheckBoxList :checkbox').attr("checked", toggle);
});

答案 1 :(得分:1)

单击“全选”可以迭代所有ListItem。并维护一个状态标志以维护是否选中所有复选框

if(boolAllChecked) {
    foreach (ListItem listItem in CentralChecks.Items)
    {
         listItem .Selected = false;
    }
}
else {
    foreach (ListItem listItem in CentralChecks.Items)
    {
         listItem .Selected = true;
    }
}         

答案 2 :(得分:0)

这是一个例子:http://jsfiddle.net/VTgGA/

代码:

$('input:checkbox').click(function(){
    var $this = $(this);

    if($this.attr('ref') != 'checkall'){
        $(".select-all").attr('checked',false);
    }
    else {
        //Select All
        var $checked = $this.is(':checked');
        $('input:checkbox').each(function(){
            $(this).attr('checked',$checked);
        })
        $(".select-all").attr('checked',$checked);
    }
})

这是复选框的html:

<input type='checkbox' ref='checkall' class='select-all'/>
<input type='checkbox' />
<input type='checkbox' />
<input type='checkbox' />
<input type='checkbox' />
<input type='checkbox' />
<input type='checkbox' />

答案 3 :(得分:0)

扩展mdmullinax的精彩答案,我想出了这个“全选”行为的通用解决方案,如果任何其他选项未被取消,也会取消选择“全选”(即第一个)选项,并在其他所有选项时重新选择“全选”项目已勾选。

它也在窗口加载时执行,因为我从ASP.Net服务器端控件(在页面的head部分注入脚本)中注入它。最好是安全而不是抱歉:)

    $(window).load(function () {
        var cbs = $('.myCheckBoxList :checkbox');
        cbs.eq(0).click(function () {
            var toggle = this.checked;
            cbs.attr('checked', toggle);
        });
        cbs.slice(1).click(function () {
            if (!this.checked) {
                cbs.eq(0).attr('checked', false);
            } else {
                cbs.eq(0).attr('checked', cbs.slice(1).filter(':not(:checked)').length == 0);
            }
        });
    });

答案 4 :(得分:0)

使用jquery有一个在asp CheckBoxList中选择所有项目的通用方法。 您可以使用select all功能在表单上拥有尽可能多的CheckBoxList控件。 你只需要确保

  1. 您的CheckBoxList有 allowSelectAll
  2. 您在复选框列表中添加了一个ListItem,以允许用户选择 全部具有全部
  3. 的值
      

    chkBoxList.Items.Insert(0,new ListItem(&#34; All&#34;,&#34; All&#34;));

    你只需要以下代码

    <script>
        $('.allowSelectAll :checkbox[value=All]').click(function () {
            var toggle = this.checked;
            $(this).closest('.allowSelectAll').find(":checkbox").attr("checked", toggle);
        });
    </script>
    

    在以下代码中,我有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>