js全选CheckBoxList后处理选中项时只能处理一个
我用js实现CheckBoxList全选,具体代码是这样的
<script type="text/javascript" language="javascript">
//全选
function CheckAll(chb) {
var aa = document.getElementsByTagName("input");
for (var i = 0; i < aa.length; i++) {
if (aa[i].type == "checkbox" && aa[i].name.indexOf(chb) > -1) {
aa[i].checked = true;
}
}
}
//反选
function RemoveAll(chb) {
var aa = document.getElementsByTagName("input");
for (var i = 0; i < aa.length; i++) {
if (aa[i].type == "checkbox" && aa[i].name.indexOf(chb) > -1) {
aa[i].checked = false;
}
}
}
</script>
这里是CheckBoxList控件:
<asp:CheckBoxList ID="ChbQueryUser" runat="server">
</asp:CheckBoxList>
这里是触发全选事件的a标签:
<a href="javascript:void(CheckAll('ChbQueryUser'))">全选</a>
这是后台代码:
protected void BtnDeleteQueryUser_Click(object sender, EventArgs e)
{
for (int i = 0; i < ChbQueryUser.Items.Count; i++)
{
if (ChbQueryUser.Items[i].Selected == true)
{
int ID = Convert.ToInt32(ChbQueryUser.Items[i].Value);
am.DeleteAuthority(ID, 1);
bind();
bindQuery();
}
}
}
点击全选选中全部项,但是后台处理的时候只能处理第一个被选中的项,然后下一个被选中的项就检测不到跳出了循环,我的js是小白,有知道的朋友希望不吝赐教。谢谢
[最优解释]
if (ChbQueryUser.Items[i].Selected == true)
{
int ID = Convert.ToInt32(ChbQueryUser.Items[i].Value);
am.DeleteAuthority(ID, 1);
bind();//这是什么?是不是又重新绑定了一次数据?
bindQuery();
}
[其他解释]
你在执行完一个删除操作之后,又对数据进行了重新绑定,那么你原先的选中信息就不会再有了。你把你的绑定数据控件放到UpdatePanel中就可以了。
[其他解释]
up!!!求指导
[其他解释]
楼主一共有几个checkbox啊,你input获取的是HTML的标签,asp.net的应该不是这样的,你最好把代码全站出来,我看看
[其他解释]
总共是有4个CheckBoxList控件,不过你看代码中&& aa[i].name.indexOf(chb) > -1这一句,是先把所有的CheckBoxList都找到,然后根据CheckBoxList的ID来进行选择的,所以不会弄混。现在的问题是可以找到并且全部选中,但是在button按钮的事件里面只能检测到第一个被选中的项,其他的检测不到。如果还没明白的话我把全部代码都发出来好把。谢谢你的回复
[其他解释]
再次up,求指导!
[其他解释]
我这里没问题啊,后台获取的selected都是true
[其他解释]
我看了一天了,在其他网站里面测试的时候都是没问题的,但是在我这里出现了问题,问题是当处理完一个被选中的项以后,CheckBoxList就貌似刷新了。所有被选中的项都没了,连CheckBoxList.Items.Count都变了。我不明白这是什么问题。正常来说是不会刷新的。
[其他解释]
或者你这么写试试:
protected void BtnDeleteQueryUser_Click(object sender, EventArgs e)
{
for (int i = 0; i < ChbQueryUser.Items.Count; i++)
{
if (ChbQueryUser.Items[i].Selected == true)
{
int ID = Convert.ToInt32(ChbQueryUser.Items[i].Value);
am.DeleteAuthority(ID, 1);
}
}
//如果你这里确实是数据重新绑定的话
bind();
bindQuery();
}
[其他解释]
唉,是啊,我快郁闷死了。就是重新绑定了数据,愣是没看出来,各种测试,我还很郁闷。突然发现了觉得自己特别二。谢谢啦。
[其他解释]
嗯,就是重新绑定数据了,你们两个都发现了问题,分就平均给你们两个啦。嘿嘿