
var setting = {
data: {
simpleData: {
enable: true
}
},
view: {
showIcon: false
},
callback:{
onClick:function zTreeOnClick(event, treeId, treeNode){
alert(treeNodetId + ", " + treeNodename+", "+treeId);
var ids=[];
ids=getChildren(ids,treeNode);
}
},
check: {
enable: true,
autoCheckTrigger:false,
chkboxType:{ "Y":"ps", "N":"ps" }
}
};
//ids是一个数组 返回结果数组 treeNode是选中的节点
function getChildren(ids,treeNode){
idspush(treeNodeid);
if (treeNodeisParent){
for(var obj in treeNodechildren){
getChildren(ids,treeNodechildren[obj]);
}
}
return ids;
}
呵呵,不想套了,给你个设计思想,你套用一下就行了。。。
数据表bmclass
id int(自动编号)
parentid int(父ID)
name varchar(分类名称)
<%
'数据库连接
set conn=ServerCreateObject("ADODBConnection")
connopen "driver={SQL Server};server=;DATABASE=test;UID=sa;PWD="
'打开所有父层数据
set rs=ServerCreateObject("ADODBRecordset")
rsOpen "select from bmclass where parentid=0 order by rid",conn,1,3
'层次数表态变量赋初值
format_i=1
'列表主程序段
do while not rseof
'打印父层数据信息
responsewrite "<a href='listaspSelfID=" & rs("id") & "&parentid=" & rs("parentid") & "'>" & rs("name") & "</a>"
responsewrite "<br>"
'子程序调用,子层数据处理
Call ListSub(rs("id"))
rsmovenext
loop
'关闭父层数据集
rsclose
set rs=nothing
'子层数据处理子程序
Sub ListSub(id)
'打开隶属于上层id的所有子层数据信息
set rs_sub=ServerCreateObject("ADODBRecordset")
rs_subOpen "select from bmclass where parentid=" & id & " order by id",conn,1,3
'列子层数据
do while not rs_subeof
'层次数表态变量递进累加
format_i=format_i+1
'循环缩进格式控制,因为顶层与二层不需要缩进,所以从第三层开始引用此程序段
for i=format_i to 3 step -1
responsewrite " |"
responsewrite " "
next
'打印子层数据信息
responsewrite " |----"
responsewrite "<a href='listaspSelfID=" & rs_sub("parentid") & "&parentid=" & rs_sub("parentid") &"'>" & rs_sub("name") & "</a>"
responsewrite "<br>"
'递归调用子程序本身,对子层数据进行逐渐处理
ListSub(rs_sub("id"))
rs_submovenext
loop
'层次数表态变量递退累减
format_i=format_i-1
'关闭子层数据集
rs_subclose
set rs_sub=nothing
End Sub
%>
不知道你是喜欢现成代码还是喜欢提供思路,我先假设你是第二种~
首先了解treepanel节点的几个方法(详细可查api extdatanodeinterface)
collapse() -> Collapse this node折叠这个节点
expand() -> Expand this node展开这个节点
来看你的需求
//创建一个树表var tree = Extcreate('ExttreePanel');
//获取根节点
var root = treegetRootNode();
if(roothasChildNodes()){
//获取根目录下的某一个子节点,这里举例,为第一个
var node = rootchildNodes[0];
if(nodehasChildNodes()){
//如果某节点的所有子节点全部勾选则此节点不展开
var allSelected = true;
for (var j = 0; j < nodechildNodeslength; j++) {
if(nodechildNodes[j]get('checked') != true){
allSelected = false;
}
}
if(allSelected){
nodecollapse();
}else{
nodeexpand();
}
}
}
剩下的只要遍历每一个子节点就可以了,如果子节点下面还有子节点,就把上面的代码做成一个function,递归地调用
还有,这种方法是需要你给出所有节点的,估计异步加载的话,很难判断,当然,最方便的方法是从数据库传来一个参数,来表明他是否被全部选中,然后,直接调用上层节点的折叠,展开方法就行了,这种还简单点
有问题的话,欢迎追问
var c_nodes=[]; //代存子节点
var p_nodes=$('#tree')getChecked();//所有选中节点
if(p_nodeslength>0){
for(var i=0;i<p_nodeslength;i++){
c_nodespush($('#tree')getChildren(p_nodestarget)); //获取选中节点的子节点,并插入数组
}
consoleinfo(c_nodes);//控制台输出
}
<script type="text/javascript">
windowonload=function(){
var result="";
$("#main")children("div")children("div")each(function(){
result+=thisid+"\n";
});
alert(result);
}
</script>
用惯jquery就懒得用document了,呵呵
1可以使用childNotes方法:
2定义和用法:
childNodes 属性返回节点的子节点集合,以 NodeList 对象。
3实例:获得 body 元素的子节点集合:
documentbodychildNodes;
以上就是关于ztree怎么获取当前节点下的子节点全部的内容,包括:ztree怎么获取当前节点下的子节点、ACCESS 递归查树型结构所有子孙结点。。、用ExtJS异步树生成带勾选框的机构权限树,由于单位数量较多(大概一万多条),需要实现以下效果:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)