.net的web项目中treeview的checkbox的选中取消问题

来源:互联网 发布:美国国籍的好处知乎 编辑:程序博客网 时间:2024/06/06 00:09
<script language="javascript"type="text/javascript">        //TreeView onclick 触发事件function client_OnTreeNodeChecked(event){    //得到当前所 Click 的对象    var objNode;    if(!public_IsObjectNull(event.srcElement))    {        //IE        objNode = event.srcElement;    }    else    {        //FF        objNode = event.target;    }    //判断是否 Click 的 CheckBox    if(!public_IsCheckBox(objNode))        return;    var objCheckBox = objNode;    //根据CheckBox状态进行相应处理    if(objCheckBox.checked==true)    {        //递归选中父节点的 CheckBox        setParentChecked(objCheckBox);                //递归选中所有的子节点        setChildChecked(objCheckBox);    }    else    {                //递归取消选中所有的子节点        setChildUnChecked(objCheckBox);                //递归取消选中父节点(如果当前节点的所有其他同级节点也都未被选中).        setParentUnChecked(objCheckBox);    }}//判断对象是否为空function public_IsObjectNull(element){    if(element==null || element == "undefined")        return true;    else        return false;}//判断对象是否为 CheckBoxfunction public_IsCheckBox(element){    if(public_IsObjectNull(element))        return false;            if(element.tagName!="INPUT" || element.type!="checkbox")        return false;    else        return true;}//得到包含所有子节点的 Node(Div 对象)function public_CheckBox2Node(element){    var objID = element.getAttribute("ID");    objID = objID.substring(0,objID.indexOf("CheckBox"));     return document.getElementById(objID+"Nodes");}//得到父节点的 CheckBoxfunction public_Node2CheckBox(element){    var objID = element.getAttribute("ID");    objID = objID.substring(0,objID.indexOf("Nodes"));     return document.getElementById(objID+"CheckBox");}//得到本节点所在的 Node(Div 对象)function public_GetParentNode(element) {    var parent = element.parentNode;    var upperTagName = "DIV";    //如果这个元素还不是想要的 tag 就继续上溯    while (parent && (parent.tagName.toUpperCase() != upperTagName))     {        parent = parent.parentNode ? parent.parentNode : parent.parentElement;    }    return parent;}//设置节点的父节点 Checkedfunction setParentChecked(currCheckBox){     var objParentNode= public_GetParentNode(currCheckBox);    if(public_IsObjectNull(objParentNode))        return;            var objParentCheckBox = public_Node2CheckBox(objParentNode);    if(!public_IsCheckBox(objParentCheckBox))        return;             objParentCheckBox.checked = true;    setParentChecked(objParentCheckBox);}//当父节点的所有子节点都未被选中时,设置父节点 UnCheckedfunction setParentUnChecked(currCheckBox){    var objParentNode= public_GetParentNode(currCheckBox);    if(public_IsObjectNull(objParentNode))        return;       //判断 currCheckBox 的同级节点是否都为 UnChecked.    if(!IsMyChildCheckBoxsUnChecked(objParentNode))        return;            var objParentCheckBox = public_Node2CheckBox(objParentNode);    if(!public_IsCheckBox(objParentCheckBox))        return;             objParentCheckBox.checked = false;        setParentUnChecked(objParentCheckBox);}//设置节点的子节点 UnCheckedfunction setChildUnChecked(currObj){    var currNode;    if(public_IsCheckBox(currObj))    {        currNode = public_CheckBox2Node(currObj);        if (public_IsObjectNull(currNode))            return;    }    else        currNode = currObj;           var currNodeChilds = currNode.childNodes;    var count = currNodeChilds.length;     for(var i=0;i<count;i++)    {        var childCheckBox = currNodeChilds[i];        if(public_IsCheckBox(childCheckBox))        {            childCheckBox.checked = false;        }        setChildUnChecked(childCheckBox);     }}//设置节点的子节点 Checkedfunction setChildChecked(currObj){     var currNode;    if(public_IsCheckBox(currObj))    {        currNode = public_CheckBox2Node(currObj);        if (public_IsObjectNull(currNode))            return;    }    else        currNode = currObj;            var currNodeChilds = currNode.childNodes;    var count = currNodeChilds.length;     for(var i=0;i<count;i++)    {        var childCheckBox = currNodeChilds[i];        if(public_IsCheckBox(childCheckBox))        {            childCheckBox.checked = true;        }        setChildChecked(childCheckBox);     }}//判断该节点的子节点是否都为 UnCheckedfunction IsMyChildCheckBoxsUnChecked(currObj){    var retVal = true;        var currNode;    if(public_IsCheckBox(currObj) && currObj.checked == true)    {        return false;    }    else        currNode = currObj;           var currNodeChilds = currNode.childNodes;    var count = currNodeChilds.length;     for(var i=0;i<count;i++)    {        if (retVal == false)            break;        var childCheckBox = currNodeChilds[i];        if(public_IsCheckBox(childCheckBox) && childCheckBox.checked == true)        {            retVal = false;            return retVal;        }        else            retVal = IsMyChildCheckBoxsUnChecked(childCheckBox);             }    return retVal;} <script><asp:TreeView ID="TreeView1" runat="server" ShowCheckBoxes="All" Style="left: 24px;            position: relative; top: 56px" onclick="client_OnTreeNodeChecked(event);" ShowLines="True"  meta:resourcekey="TreeViewModulesResource1" ImageSet="BulletedList4"   ExpandDepth="0" Target="middle">            <Nodes>                <asp:TreeNode Text="教育" Value="教育">                    <asp:TreeNode Text="111" Value="111"></asp:TreeNode>                    <asp:TreeNode Text="222" Value="222"></asp:TreeNode>                </asp:TreeNode>                <asp:TreeNode Text="新闻" Value="新闻">                    <asp:TreeNode Text="111" Value="111"></asp:TreeNode>                    <asp:TreeNode Text="222" Value="222"></asp:TreeNode>                </asp:TreeNode>                <asp:TreeNode Text="体育" Value="体育">                    <asp:TreeNode Text="111" Value="111"></asp:TreeNode>                    <asp:TreeNode Text="222" Value="222"></asp:TreeNode>                </asp:TreeNode>            </Nodes>        </asp:TreeView>