【发布时间】:2014-05-05 00:03:57
【问题描述】:
当用户点击第一个复选框 (All) 时,我想选择和取消选择所有复选框。如果用户取消选中任何复选框,则只有该复选框和第一个复选框 (All) 应该被取消选中,并且不会更改其余复选框。
我的页面中有一个Checkboxlist,我正在动态填充。
<asp:CheckBoxList runat="server" ID="cbExtList" />
代码隐藏
private Extensions _extension = new Extensions();
private ExtCollection _extCollection = new ExtCollection();
_extCollection = _extension.GetAll();
Dictionary<int, string> dExtensions = new Dictionary<int, string>();
dExtensions.Add(0, "All");
foreach (Extensions ext in _extCollection)
{
dExtensions.Add(ext.ID, ext.Extension);
}
this.cbExtList.DataSource = dExtensions;
this.cbExtList.DataTextField = "Value";
this.cbExtList.DataValueField = "Key";
this.cbExtList.DataBind();
现在一切正常。当我单击此Checkboxlist 中的第一个复选框“全部”时,我只想选择所有扩展。
这是我尝试使用代码隐藏的方法。
使用OnSelectedIndexChanged 并设置AutoPostBack = True
<asp:CheckBoxList runat="server" ID="cbExtList" OnSelectedIndexChanged="cbExtList_OnSelectedIndexChanged" AutoPostBack="True" />
protected void cbExtList_OnSelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (Convert.ToInt32(this.cbExtList.SelectedItem.Value) == 0)
{
foreach (ListItem li in cbExtList.Items)
{
li.Selected = true;
}
}
else
{
foreach (ListItem li in cbExtList.Items)
{
li.Selected = false;
}
}
}
catch (Exception ex)
{
Monitoring.WriteException(ex);
}
}
【问题讨论】:
-
您目前使用的是什么方法?如果您可以发布您现在使用的代码来尝试选中/取消选中所有复选框,这将有助于诊断您的问题
-
@PseudoNym01 我编辑了我的问题。我从后面的代码中尝试过,但没有正确实现功能。从客户端,我已经提到了我已经尝试过的链接。
-
您使用 javascript 和 jquery 标记了问题,但据我所知,您也没有尝试使用...如果这是一个可行的选项,您可以从 jquery 轻松完成此操作
-
@Rikon,我认为如果他在客户端执行此操作,复选框的“已选择”属性将不会在服务器端更新,不是吗?
-
我的代码可以很好地选择全部和取消选择全部。但它有一个问题,即在取消选中除第一个以外的任何复选框时,它不会取消选中它。
标签: c# javascript jquery asp.net checkbox