首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

js全选CheckBoxList后处理选中项时只好处理一个

2012-12-18 
js全选CheckBoxList后处理选中项时只能处理一个我用js实现CheckBoxList全选,具体代码是这样的script type

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是小白,有知道的朋友希望不吝赐教。谢谢
[最优解释]
引用:
引用:我这里没问题啊,后台获取的selected都是true我看了一天了,在其他网站里面测试的时候都是没问题的,但是在我这里出现了问题,问题是当处理完一个被选中的项以后,CheckBoxList就貌似刷新了。所有被选中的项都没了,连CheckBoxList.Items.Count都变了。我不明白这是什么问题。正常来说是不会刷新的。
     ……

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的应该不是这样的,你最好把代码全站出来,我看看
[其他解释]
引用:
楼主一共有几个checkbox啊,你input获取的是HTML的标签,asp.net的应该不是这样的,你最好把代码全站出来,我看看
总共是有4个CheckBoxList控件,不过你看代码中&& aa[i].name.indexOf(chb) > -1这一句,是先把所有的CheckBoxList都找到,然后根据CheckBoxList的ID来进行选择的,所以不会弄混。现在的问题是可以找到并且全部选中,但是在button按钮的事件里面只能检测到第一个被选中的项,其他的检测不到。如果还没明白的话我把全部代码都发出来好把。谢谢你的回复
[其他解释]
再次up,求指导!
[其他解释]
我这里没问题啊,后台获取的selected都是true
[其他解释]
引用:
我这里没问题啊,后台获取的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();
    }


[其他解释]
引用:
引用:引用:我这里没问题啊,后台获取的selected都是true我看了一天了,在其他网站里面测试的时候都是没问题的,但是在我这里出现了问题,问题是当处理完一个被选中的项以后,CheckBoxList就貌似刷新了。所有被选中的项都没了,连CheckBoxList.Items.Count都变了。我不明白这是……
唉,是啊,我快郁闷死了。就是重新绑定了数据,愣是没看出来,各种测试,我还很郁闷。突然发现了觉得自己特别二。谢谢啦。
[其他解释]
引用:
或者你这么写试试:C# code?1234567891011121314protected void BtnDeleteQueryUser_Click(object sender, EventArgs e)    {        for (int i = 0; i < ChbQueryUser.Items.Count; i++)        {            ……
嗯,就是重新绑定数据了,你们两个都发现了问题,分就平均给你们两个啦。嘿嘿

热点排行