asp.net1.0 TreeView

var OnInit;
var OnNodeChecked;


<!-- 这是注释 -->
function initchecknode(TreeView1)
{
    
//获得需要初始化选择状态的节点的字符串.
    var selectedNodes = document.getElementById("corpList").value;
    
var arrayNodes = new Array();
    arrayNodes 
= selectedNodes.split(",");
    
var AllRootNode=new Array();
    AllRootNode
=document.getElementById(TreeView1).getChildren();
    
    
//初始化选择的节点
    
    findAndCheckedNodes(AllRootNode, arrayNodes, 
1);
}


function findAndCheckedNodes(NodeArray, nodeDatas, level)
{
    
if(parseInt(NodeArray.length)==0)
    
{
        
return;
    }

    
else
    
{
        
        
for(var i=0;i<parseInt(NodeArray.length);i++)
        
{
            
var cNode,nodeData,nodeCheckBox;
            cNode
=NodeArray[i];
            
////如果该节点在nodeDatas里则初始化checked = true;
            nodeData = cNode.getAttribute("NodeData");

            nodeCheckBox 
= cNode.getAttribute("CheckBox");

            
if (nodeCheckBox)
            
for(var j=0;j<nodeDatas.length;j++)
            
{
                
if(nodeDatas[j] == nodeData)
                
{
                    cNode.setAttribute(
"checked","true");
                    
//alert(nodeData);
                    break;
                }

            }

            
//如果有子节点,则继续递归
            if(parseInt(cNode.getChildren().length)!=0)
                findAndCheckedNodes(cNode.getChildren(), nodeDatas, level 
+ 1);    
        }

    }

}


function tree_oncheck(tree)
{
    
var node=tree.getTreeNode(tree.clickedNodeIndex);
    
var Pchecked=tree.getTreeNode(tree.clickedNodeIndex).getAttribute("checked");
    
    
//alert(Pchecked);
    setcheck(node,Pchecked);
    setParent(node,Pchecked);
//如果是选择那么选择其父接点.

    
//alert(OnInit);
    if (OnInit)
    
{
        OnInit();
    }

    FindCheckedFromNode(tree, 
1);
}


function FindCheckedFromNode(node, level) 
{
    
var i = 0;
    
var nodes = new Array();
    nodes 
= node.getChildren();
   
    
for (i = 0; i < nodes.length; i++
    
{
        
var cNode;
        cNode
=nodes[i];
        
if (cNode.getAttribute("checked"))
            AddChecked(cNode);
        
//else
        //    AddUnChecked(cNode);
        if (parseInt(cNode.getChildren().length) != 0 ) 
        
{
            FindCheckedFromNode(cNode, level 
+ 1);
        }

    }

}


function AddChecked(node) 
{
    
if (OnNodeChecked)
        OnNodeChecked(node);
}


function setcheck(node,Pc)
{
    
var i;
    
var ChildNode=new Array();
    
    ChildNode
=node.getChildren();

    
if(parseInt(ChildNode.length)==0)
        
return;
    
else
    
{
        
for(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 setParent(node,Pc)
{
    
var parentNode = node.getParent();
    
if(parentNode)
    
{    
        
var parentNodeFather = parentNode.getParent();
        
if(parentNodeFather)
        
{
            setParent(parentNode,Pc);
        }

        
        
//parentNode.setAttribute("checked",Pc);
        
        
if(Pc)
        
{
            parentNode.setAttribute(
"checked",Pc);
        }

        
else
        
{
            checkBrother(parentNode,Pc,node.getAttribute(
"NodeData"))
        }

    }

}


function checkBrother(parentNode,Pc,nodeData)
{
    
var childNodes = new Array();
    childNodes 
= parentNode.getChildren();
    
if(childNodes.length >0)
    
{
        
var bChecked = true;
        
for(var i=0;i<childNodes.length;i++)
        
{
            
if(childNodes[i].getAttribute("checked"== true &&  childNodes[i].getAttribute("NodeData"!= nodeData)
            
{
                
//alert(i+childNodes[i].getAttribute("Text"));
                bChecked = false;
                
break;
            }

        }

        
if(bChecked)
        
{
            parentNode.setAttribute(
"checked",Pc);
        }

        
else
        
{
            
//所有父结点选择
            setParent(parentNode,!Pc)
        }

    }

    
else
    
{
        parentNode.setAttribute(
"checked",Pc);
    }

}
;



CS:
private void buildPrimaryTree()
        
{
            TreeView1.Attributes.Clear();
            TreeView1.Attributes.Add(
"oncheck""tree_oncheck(this)");
            TreeNode currNode 
= new TreeNode();
            currNode.Text 
= "全县市";
            currNode.Expanded 
= true;
            currNode.CheckBox 
= true;
            currNode.NodeData 
= "-1";
            TreeNode childNode;
            TreeView1.Nodes.Add(currNode);
            DataTable dtCountry 
= new Comm().GetEveryCounty();
            
string strCorpList = "-1,";
            
foreach (DataRow dr in dtCountry.Rows)
            
{
                childNode 
= new TreeNode();
                childNode.Text 
= dr["corpName"].ToString().Trim();
                childNode.NodeData 
= dr["corpCode"].ToString().Trim();
                childNode.CheckBox 
= true;
                
//childNode.Checked = true;
                currNode.Nodes.Add(childNode);
                strCorpList 
+= dr["corpCode"].ToString().Trim() + ",";
            }

            
this.corpList.Value = strCorpList;
        }
客户端:
function fnDoInit()
 {
  strCorpList = "";
  document.getElementById("corpList").value = strCorpList;
 } 
 function fnDoNodeChecked(cNode)
 { 
  var nodeData = cNode.getAttribute("NodeData");
  strCorpList += nodeData + "," ;
  //alert(strCorpList);
  document.getElementById("corpList").value = strCorpList;
 }
 var strCorpList = "";
 OnInit = fnDoInit;
 OnNodeChecked = fnDoNodeChecked;  
  </script>
</HEAD>
 <body onload=" BodyOnLoad();initchecknode('TreeView1')">

相关函数和操作:
var tnode = tree.getNodeFromIndex(tree.selectedNodeIndex);
var cNode = tree.getTreeNode(tree.clickedNodeIndex);
var nodeTarget = cNode.getAttribute("Target");
var nodeData = cNode.getAttribute("NodeData");
var nodeExpanded = cNode.getAttribute("Expanded");
var childNodes = cNode.getChildren();
使视图定位到选中的节点
var tree = document.getElementById("TreeView1");
            
var tnode = tree.getNodeFromIndex(tree.selectedNodeIndex);
            
var node = tnode.subtree.all.item("_tntext"0);
            node.scrollIntoView(
true);
posted on 2006-06-27 13:13  老狐狸  阅读(304)  评论(0)    收藏  举报