您现在的位置: 365建站网 > 365文章 > asp.net中TreeView的CheckBox 是否选中

asp.net中TreeView的CheckBox 是否选中

文章来源:365jz.com     点击数:3867    更新时间:2009-09-16 11:53   参与评论

var ClienName;

function OnTreeNodeChecked(controlID,obj)
{
    tree=obj;//取出TreeView在客户端的表示对象
    ClienName=tree.id.substring(0,tree.id.indexOf(controlID));//取出TreeView在客户ID的前缀
  
    var ele = event.srcElement;
    if(ele.type=='checkbox')
    {
        //当前节点全选
        var subLength=ClienName.length+14;//取出当前复选框的索引值
        var subLength=tree.id.length+1;
        var nowIndex=ele.id.substring(subLength)
    .substring(0,ele.id.substring(subLength).indexOf("C"));
        var childrenDivID = ele.id.replace('CheckBox','Nodes');
        var div = document.getElementById(childrenDivID); //获取同级的Div
        if(div!=null) //判断同级的Div是否为Null
        {
            var checkBoxs = div.getElementsByTagName('INPUT');
            for(var i=0;i<checkBoxs.length;i++)
            {
                if(checkBoxs[i].type=='checkbox')
                checkBoxs[i].checked=ele.checked;
            }
        }
        //处理选择当前节点的父节点的选中和取消选中
        ChkParent(nowIndex,ele.id,ele.checked);
    }
}
//上一节点的索引Index,上一节点checkBox的ID,状态(True)
function ChkParent(index,childId,flag)
{
//寻找当前节点的父节点(即寻找上级的DIV)
    for(i=index;i>=0;i--)
    {
        var id=tree.id+"n"+i+"CheckBox";//当前CheckBox的ID
        var parent=document.getElementById(id);//获取当前的CheckBox
        if(parent!=null)//判断获取的当前的CheckBox是否为空
        {  
            var childrenDivID = parent.id.replace('CheckBox','Nodes');
            var div = document.getElementById(childrenDivID); //获取同级的Div
            if(div==null) //判断同级的Div是否为Null
            {
                continue;
            }
            else
            {
                  chk(div,flag);
                    break;
            }
        }
    }
}
//根据找到的div逐级处理各级CheckBox的状态
function chk(obj,flag)
{
    var chkID=obj.id.replace('Nodes','CheckBox');
    var chkbox = document.getElementById(chkID); //获取同级的CheckBox
    if(chkbox!=null)
    {
        //选中状态
        if(flag)
        {
            chkbox.checked=flag;
            //如果为顶层则终止递归
            if(chkID==tree.id+"n0CheckBox")
            {
                return;
            }
            //递归处理各级CheckBox的状态
            chk(obj.parentNode,flag);
        }
        ///非选中状态
        else
        {
            //如果为顶层则终止递归
            if(chkID==tree.id+"n0CheckBox")
            {
                return;
            }
            //判断当前节点下面是否有Checkbox选中,如果有选中的,当前节点的CheckBox不取消选中状态,否则取消
            var checkBoxs = obj.getElementsByTagName('INPUT');
            var sel=false;//记录当前节点下面是否有Checkbox选中
            for(var i=0;i<checkBoxs.length;i++)
            {
                if(checkBoxs[i].type=='checkbox')
                {
                    if( checkBoxs[i].checked)
                    {
                        sel=true;
                        break;
                    }
                }
            }
            if(!sel)
            {
                chkbox.checked=flag;
            }
            chk(obj.parentNode,flag);
        }
    }
    else
    {
        return;
    }
}

前台调用:tvPeople.Attributes.Add("onclick", "OnTreeNodeChecked('" + tvPeople.ID + "'," + tvPeople.ClientID + ")");

tvPeople为TreeView控件的实例名

根据一个checkbox节点对应一个table,父节点对应一个div 在找到相应的checkbox.进而判断选择与否.

Tag标签: asp.net,treeview,checkbox节点选中

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (3867人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号