c# 在treeview中 获取所有子节点的名称

c# 在treeview中 获取所有子节点的名称,第1张

一个SQL就可以搞定的;

直接SQL写递归算法;

但是需要一个根节点的哈;

我简单写了一个Demo,思路就是这样的:

DataTable dt = bfExecuteTable(strSql); //strSql 就写一个存储过程,然后取出你需要的节点数据

TreeNodeCollection TreeNodeCol = new TreeNodeCollection();

TreeNodeCol = GetAllTreeNode(TreeNodeCol, -1, dt);

//加载到树

foreach (TreeNode node in TreeNodeCol)

{

YourTreeViewIDNodesAdd(node);

}

//递归方法

private TreeNodeCollection GetAllTreeNode(TreeNodeCollection Nodes, int fid, DataTable dt)

{

TreeNode node; //递归寻找子节点

DataRow[] rows = dtSelect("fid=" + fid);

foreach (DataRow row in rows)

{

node = new TreeNode();

nodeValue = row["id"]ToString(); //ID 对应Value

nodeText = row["mc"]ToString(); //名称 对应 Text

nodeTarget = "YourTreeName";

NodesAdd(node);

GetAllTreeNode(nodeChildNodes, ConvertToInt32(nodeValue), dt);

}

return Nodes;

}

帮人帮到底,我把SQL也跟你简单写一个吧:

WITH CET ( id, fid,mc )AS

(

SELECT id ,fid,mc

FROM YourTableName --你的数据表

WHERE id = @YourRootId --你的根节点

UNION ALL

SELECT tid ,tfid,tmc

FROM YourTableName t --你的数据表

JOIN CET ct ON tfid = ctid

)

SELECT FROM CET ;

触发事件写在你修改的记录那,获得Tree的CMP,然后得到你要修改的node(通过id或其它都可以),nodeuicheckboxchecked

=

true;同时nodeactive(),前提你的tree加了ExttreeTreeEditor

,我更喜欢d出个window或message窗口,修改完对应修改node就行了。

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);//控制台输出

}

public

void

PrintTreeViewNode(TreeNodeCollection

node)

{

foreach

(TreeNode

n

in

node)

{

ResponseWrite(nText+",");

PrintTreeViewNode(nChildNodes);

}

}

调用

PrintTreeViewNode(TreeView1Nodes);

//////////////////////////////////////////////////////////////////

private

void

button1_Click(object

sender,

EventArgs

e)

{

label1Text

=

stringEmpty;

#region

递归

//1获取TreeView的所有根节点

foreach

(TreeNode

tn

in

treeView1Nodes)

{

DiGui(tn);

}

#endregion

}

private

void

DiGui(TreeNode

tn)

{

//1将当前节点显示到lable上

label1Text

+=

"aaa"

+

"

"

+

tnText

+

"\r\n";

foreach

(TreeNode

tnSub

in

tnNodes)

{

DiGui(tnSub);

}

}

以上就是关于c# 在treeview中 获取所有子节点的名称全部的内容,包括:c# 在treeview中 获取所有子节点的名称、如何获取Ext treepanel树内所有选中的节点数据之getChecked、easyui tree怎么获取子节点的全部子节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存