c# 在treeview中 获取所有子节点的名称
答案:3 悬赏:30
解决时间 2021-02-11 18:28
- 提问者网友:绿海猖狂
- 2021-02-11 13:37
c# 在treeview中 获取所有子节点的名称
最佳答案
- 二级知识专家网友:留下所有热言
- 2021-02-11 14:53
一个SQL就可以搞定的;
直接SQL写递归算法;
但是需要一个根节点的哈;
我简单写了一个Demo,思路就是这样的:
DataTable dt = bf.ExecuteTable(strSql); //strSql 就写一个存储过程,然后取出你需要的节点数据
TreeNodeCollection TreeNodeCol = new TreeNodeCollection();
TreeNodeCol = GetAllTreeNode(TreeNodeCol, -1, dt);
//加载到树
foreach (TreeNode node in TreeNodeCol)
{
YourTreeViewID.Nodes.Add(node);
}
//递归方法
private TreeNodeCollection GetAllTreeNode(TreeNodeCollection Nodes, int fid, DataTable dt)
{
TreeNode node; //递归寻找子节点
DataRow[] rows = dt.Select("fid=" + fid);
foreach (DataRow row in rows)
{
node = new TreeNode();
node.Value = row["id"].ToString(); //ID 对应Value
node.Text = row["mc"].ToString(); //名称 对应 Text
node.Target = "YourTreeName";
Nodes.Add(node);
GetAllTreeNode(node.ChildNodes, Convert.ToInt32(node.Value), dt);
}
return Nodes;
}
帮人帮到底,我把SQL也跟你简单写一个吧:
WITH CET ( id, fid,mc )AS
(
SELECT id ,fid,mc
FROM YourTableName --你的数据表
WHERe id = @YourRootId --你的根节点
UNIOn ALL
SELECt t.id ,t.fid,t.mc
FROM YourTableName t --你的数据表
JOIN CET ct ON t.fid = ct.id
)
SELECt * FROM CET ;
直接SQL写递归算法;
但是需要一个根节点的哈;
我简单写了一个Demo,思路就是这样的:
DataTable dt = bf.ExecuteTable(strSql); //strSql 就写一个存储过程,然后取出你需要的节点数据
TreeNodeCollection TreeNodeCol = new TreeNodeCollection();
TreeNodeCol = GetAllTreeNode(TreeNodeCol, -1, dt);
//加载到树
foreach (TreeNode node in TreeNodeCol)
{
YourTreeViewID.Nodes.Add(node);
}
//递归方法
private TreeNodeCollection GetAllTreeNode(TreeNodeCollection Nodes, int fid, DataTable dt)
{
TreeNode node; //递归寻找子节点
DataRow[] rows = dt.Select("fid=" + fid);
foreach (DataRow row in rows)
{
node = new TreeNode();
node.Value = row["id"].ToString(); //ID 对应Value
node.Text = row["mc"].ToString(); //名称 对应 Text
node.Target = "YourTreeName";
Nodes.Add(node);
GetAllTreeNode(node.ChildNodes, Convert.ToInt32(node.Value), dt);
}
return Nodes;
}
帮人帮到底,我把SQL也跟你简单写一个吧:
WITH CET ( id, fid,mc )AS
(
SELECT id ,fid,mc
FROM YourTableName --你的数据表
WHERe id = @YourRootId --你的根节点
UNIOn ALL
SELECt t.id ,t.fid,t.mc
FROM YourTableName t --你的数据表
JOIN CET ct ON t.fid = ct.id
)
SELECt * FROM CET ;
全部回答
- 1楼网友:最后战士
- 2021-02-11 15:33
winform上的代码:
treenodecollection nodes = treeview1.nodes[1].nodes;//获取某节点下所有子节点
foreach (treenode node in nodes)//遍历
{
string name = node.text;//取到名称
//messagebox.show(name);
}
webfrom上的代码:
treenodecollection nodes = treeview1.nodes[1].childnodes;
foreach (treenode node in nodes)
{
string name = node.text;
}
上面看具体情况修改获取某节点下所有子节点那行代码。
以上内容希望对你有帮助^^
- 2楼网友:狙击你的心
- 2021-02-11 14:59
foreach (TreeNode node in trvBarCode.Nodes[0].Nodes[bb])
{
MessageBox.Show(node.Text.tostring());
}
大概是这意思吧,语法忘记了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯