// 在页面加载中: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 >