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>
请注意,页面上有多个复选框列表,因此任何解决方案都必须牢记这一点。
答案 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控件。 你只需要确保
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>