ztree怎么获取当前节点下的子节点

ztree怎么获取当前节点下的子节点,第1张

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异步树生成带勾选框的机构权限树,由于单位数量较多(大概一万多条),需要实现以下效果:等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9871411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存