コードをコピー コードは次のとおりです: /* <BR>関数名: CheckNode(currentNode)、ParentNode(currentNode)、ChildNode(currentNode) </P> <P>機能: チェックボックス付きのツリービューを実装します。<BR>1. 親ノードを選択すると、そのすべての子ノードが選択されます。<BR>2. すべての子ノードの選択を解除すると、親ノードの選択も続きます。キャンセル</P> <P>使用法: <BR>1. <head></head> の途中に CheckNode(currentNode)、ParentNode(currentNode)、ChildNode(currentNode) を追加します。 2. *.aspx.cs <p> */ <br> の Page_load() イベントに yourTreeView.Attribute.Add("OnCheck","CheckNode(yourTreeView.getTreeNode(yourTreeView.clickedNodeIndex))") を追加します。 <br> //すべての子ノードを再帰的に走査します <br> function CheckNode(currentNode) <br> { <br> var childNode=new Array(); <br> varparentNodeChild=new Array(); <br> childNode=currentNode.getChildren(); <br> if(currentNode.getAttribute('checked')) <br> { <br> isChecked=true <br> } <br> else <br> { <br> isChecked=false; <br> } <br> //親ノードの処理 <br> if(currentNode.getParent()!=null) <br> { <br> //選択された処理 <br> if(currentNode.getAttribute ('チェック済み')) <br> { <br> ParentNode(currentNode); <br> } <br> else <br> //チェックを外します <br> { <br> ChildNode(currentNode); } <br> } <br> else <br> { <br> //何もしない <br> } <br> //子ノードの処理 <br> if(childNode.length>0) <br> { <br> for(var i=0;i<childnode.length> { <br> childNode.setAttribute("Checked",isChecked); <br> if(childNode.getChildren().length>0) <br> { <br> CheckNode(childNode); <br> } <br> } <br> } <br><br> } <br> // 親ノードを再帰的に選択 <br> function ParentNode(currentNode) <br> { <br> if(currentNode.getParent()!=null) <br> { <br> currentNode.getParent().setAttribute('Checked',true); <br> // 更新をトラバースするために ParentNode(currentNode) を再帰的に呼び出します。前の層のノード <br> ParentNode(currentNode.getParent()); <br> } <br> } <br> //親ノードの選択を再帰的に解除 <br> function ChildNode(currentNode) <br> { <br> if(currentNode.getParent()!=null) <br> { var selectedCount=0; <br> var childNode=currentNode.getParent().getChildren(); <br> for (var i=0; i<childNode. length;i ) <br> { <br> if(childNode.getAttribute('Checked')) <br> { <br> selectedCount ; <br> } <br> } <br> if(checkedCount= =0) <br> { <br> currentNode.getParent().setAttribute('Checked',false); <br> } <br> // ChildNode(currentNode) を再帰的に呼び出して、上位レベルの親ノードを走査します <br> ChildNode (currentNode) .getParent()); 問題<br><br><br><br><br>コードをコピーします<br><br><br> コードは次のとおりです:<br><div class="codebody" id="code83245"> <br> var AllRootNode=new Array(); <br> AllRootNode=TreeView1.getChildren(); <br> AlertNode(AllRootNode); <br><br> function AlertNode(NodeArray) <br> { <br> if(parseInt(NodeArray.length)==0) <br> return; <br> else <br> { <br> for(i=0;i<NodeArray.length;i ) <br> { <br> var cNode; <br> cNode=NodeArray; <br> alter(cNode.getAttribute("Text")); <br> if(parseInt(cNode.getChildren().length)!=0) <br> AlertNode(cNode.getChildren()); <br> } <br> } <br> } <p></p> </div></childnode.length></p> </div>