
一个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怎么获取子节点的全部子节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)