javascript 操作treeview的checkbox載入、全選、全不選、以及游標回焦問題

來源:互聯網
上載者:User

 

//在頁面載入中:onLoad="Loadtreeview()";//伺服器端載入時註冊treeview的check的事件: TreeView1.Attributes.Add("oncheck","tree_oncheck(TreeView1)");<script language="javascript">   function Loadtreeview() //載入樹形   ...{    var AllRootNode=new Array();    AllRootNode=document.getElementById("TreeView1").getChildren();//獲得treview的最外層節點數組    CheckboxLoad(AllRootNode);  //載入checkbox的控制項    var selectedNodes = GetnodeID(AllRootNode);//獲得被checked的nodes的ID連加字串    // window.alert(selectedNodes);    var arrayNodes = new Array();    arrayNodes = selectedNodes.split(",");    //window.alert(gg);    findAndCheckedNodes(AllRootNode,arrayNodes);//載入時判斷checkbox的是否有被checked,有的話把它設定成勾住狀態   }   function tree_oncheck(TreeView1)//treeview的check的事件   ...{            var AllRootNode=new Array();    AllRootNode=document.getElementById("TreeView1").getChildren();      var node=TreeView1.getTreeNode(TreeView1.clickedNodeIndex); //獲得剛剛被check的節點    var child="";    child=node.getAttribute("id");//獲得剛剛被check的節點的ID    Select(AllRootNode,child);  //實現游標回焦方法    var Pchecked=TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("checked");    setcheck(node,Pchecked); //實現checked節點的下面判斷是否有子節點有的話,全部實現把子節點給勾上或全部不勾          /**//*之後的其他動作自己添寫,比如check觸發的方法、事件啊等等*/                }        function Select(NodeArray,nodeid)   //游標回焦方法   ...{     if(parseInt(NodeArray.length)==0)               return;     else     ...{      for(var i=0;i< parseInt(NodeArray.length);i++)      ...{                          var cNode;       cNode=NodeArray[i];        if (cNode.getAttribute("id")==nodeid)        ...{        TreeView1.selectedNodeIndex = cNode.getNodeIndex();        break;        }       //如果有子節點,則繼續遞迴       if(parseInt(cNode.getChildren().length)!=0)       Select(cNode.getChildren(),nodeid);         }                        }   }              function setcheck(node,Pc) //設定子節點選中            ...{                                var ChildNode=new Array();                ChildNode=node.getChildren();                                 if(parseInt(ChildNode.length)==0)                    return;                else                ...{                    for(var i=0;i<ChildNode.length;i++)                    ...{                        var cNode;                        cNode=ChildNode[i];                        if(parseInt(cNode.getChildren().length)!=0)                            setcheck(cNode,Pc);                        cNode.setAttribute("checked",Pc);                    }                }            }      function GetnodeID(NodeArray) //找到被選中節點的所有ID的字串累加   ...{            var str = "";           if(parseInt(NodeArray.length)==0)                 return;   else   ...{    var cNode;    for(var i=0;i<parseInt(NodeArray.length);i++)    ...{     cNode=NodeArray[i];     if (cNode.getAttribute("Checked")==true)     ...{       str = str + cNode.getAttribute("id")+",";     }     //如果有子節點,則繼續遞迴     if(parseInt(cNode.getChildren().length)!=0)     GetnodeID(cNode.getChildren());     }                    }        return  str;    } function CheckboxLoad(NodeArray)  //checkbox的初始化 ...{       if(parseInt(NodeArray.length)==0)             return;        else        ...{            for(var i=0;i<parseInt(NodeArray.length);i++)            ...{                                    var cNode;                cNode=NodeArray[i];                                cNode.setAttribute("checkbox","true");                        //如果有子節點,則繼續遞迴                if(parseInt(cNode.getChildren().length)!=0)                CheckboxLoad(cNode.getChildren());             }                        } }    function findAndCheckedNodes(NodeArray,nodeDatas)  //找到已經被checked的節點     ...{      if(parseInt(NodeArray.length)==0)      ...{       return;      }      else      ...{       for(var i=0;i<parseInt(NodeArray.length);i++)       ...{        var cNode,nodeData;        cNode=NodeArray[i];        /**/////如果該節點在nodeDatas裡則初始化checked = true;        nodeData = cNode.getAttribute("id");        for(var j=0;j<parseInt(nodeDatas.length);j++)        ...{         if(nodeDatas[j] == nodeData)         ...{          cNode.setAttribute("checked","true");          break;         }        }        //如果有子節點,則繼續遞迴        if(parseInt(cNode.getChildren().length)!=0)        findAndCheckedNodes(cNode.getChildren(),nodeDatas);           }      }     }    </script>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.