在asp.net CheckBoxList中选择所有项目
ASP.NET和C#。
我想要一个带有“全选”项目的CheckboxList。
- 选择此特定项目时,也将选择所有其他项目。
- 当从该项目中删除选择时,它也将从所有其他项目中删除。
- 无论“全选”项目的选择状态如何,选中/取消选中任何其他项目只会对该特定项目产生影响。
我正在寻找一个jquery解决方案。
这是我的代码隐藏中的数据绑定代码:
IList 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();
这是标记:
Centrals:
Centrals
请注意,页面上有多个复选框列表,因此任何解决方案都必须牢记这一点。
您可以使用任何复选框列表,只需将myCheckBoxList的cssclass添加到每个CheckBoxList控件:
$('.myCheckBoxList :checkbox').eq(0).click(function() { var toggle = this.checked; $('.myCheckBoxList :checkbox').attr("checked", toggle); });
您可以单击“全选”来遍历所有ListItem。 并维护一个状态标志,以维护是否选中所有复选框
if(boolAllChecked) { foreach (ListItem listItem in CentralChecks.Items) { listItem .Selected = false; } } else { foreach (ListItem listItem in CentralChecks.Items) { listItem .Selected = true; } }
这是一个例子: 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:
扩展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); } }); });
有一种使用jquery在asp CheckBoxList中选择所有项的通用方法。 您可以使用select allfunction在表单上拥有尽可能多的CheckBoxList控件。 你只需要确定
- 你的CheckBoxList有allowSelectAll类
- 您已将ListItem添加到复选框列表,以允许用户选择All的值为All
chkBoxList.Items.Insert(0,new ListItem(“All”,“All”));
你只需要以下代码
在下面的代码中我有4个复选框列表