c# 在treeview中 获取所有子节点的名称
发布网友
发布时间:2023-06-23 12:08
我来回答
共3个回答
热心网友
时间:2023-10-11 00:34
一个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 ;
热心网友
时间:2023-10-11 00:35
foreach (TreeNode node in trvBarCode.Nodes[0].Nodes[bb])
{
MessageBox.Show(node.Text.tostring());
}
大概是这意思吧,语法忘记了
热心网友
时间:2023-10-11 00:35
是所有子节点的名称吗?用递归算法。。追问知道用递归 不会用 我才学没几天
追答你取得了名称是要怎么用?是只是获取,然后放到List里面?数组里面?