<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; } //判斷對象是否爲 CheckBox function 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"); } //得到父節點的 CheckBox function 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; } //設置節點的父節點 Checked function 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); } //當父節點的所有子節點都未被選中時,設置父節點 UnChecked function 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); } //設置節點的子節點 UnChecked function 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); } } //設置節點的子節點 Checked function 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); } } //判斷該節點的子節點是否都爲 UnChecked function 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>
.net的web項目中treeview的checkbox的選中取消問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.