TreeView如何遍历?

页面上有个TreeView。数据库里相关数据有四五层节点(根据需要还有可能继续增加),但是在页面显示时,只要显示前两层。
现在,我遇到的问题是:
设该TreeView有第一层节点A,第二层节点B,第二层下未显示的第三第四层节点C、D、E。
当选中B节点时,在数据库里的另一张表中保存数据。B节点一条,该节点的父节点A一条,该节点的所有子节点C、D、E有多少就加多少条,无论后面还有几层,全部各存一条数据。
循环遍历的逻辑把我搅糊涂了。请教高手。谢谢。提供一个能实现这个效果的代码框架就好。谢谢。

TreeView的数据存储格式一般如下:
(节点编号,节点名称,节点值,上级节点编号)

遍历TreeView一般用递归算法

public void LoadTree(TreeNode tn)
{
if(tn == null) //加载根节点
{
//从数据库获取上级节点编号=0的DataSet
foreach(DataRow dr in ds.Tables[0].Rows)
{
TreeNode newNode=new TreeNode(dr["节点名称"] , dr["节点编号"]);
tn.Nodes.Add(newNode);

LoadTree(newNode);//递归
}

}

else
{
//获取当前节点的下一层节点DataSet
foreach(DataRow dr in ds.Tables[0].Rows)
{
TreeNode newNode=new TreeNode(dr["节点名称"] , dr["节点编号"]);
tn.Nodes.Add(newNode);

LoadTree(newNode);//递归
}
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

TreeView如何遍历?
遍历TreeView一般用递归算法 public void LoadTree(TreeNode tn){ if(tn == null) \/\/加载根节点 { \/\/从数据库获取上级节点编号=0的DataSet foreach(DataRow dr in ds.Tables[0].Rows){ TreeNode newNode=new TreeNode(dr["节点名称"] , dr["节点编号"]);tn.Nodes.Add(newNode);LoadTre...

C#中treeview的遍历问题
父节点和子节点需要分开遍历(当然也可以用循环嵌套),表示节点的子节点:this.trv_tree.nodes[0].nodes[0].text;\/\/第一个父节点下的第一个子节点的text值

C#中如何遍历TreeView的所有跟节点
SelectByID(this.TreeView1,this.TextBox1.Text.ToString());private void SelectByID(TreeView tv,string ID){ foreach(TreeNode tn in tv.Nodes){ if(rec(tv,tn,ID)){ break;} } } private bool rec(TreeView tv,TreeNode tn,string ID){ string ...

遍历Treeview的所有节点(包括子节点)添加到新的treeview中 C#
TreeNode node =GetNode(item);\/\/遍历子节点 treeView2.Nodes.Add(node);} private TreeNode GetNode(TreeNode node){ if (node.Nodes.Count == 0)return new TreeNode(node.Text);TreeNode ns = new TreeNode(node.Text);foreach (TreeNode item in node.Nodes){ TreeNode n = GetNode...

在C# winform treeview 遍历 checkBox 状态
用这段代码就可以了 foreach (TreeNode node in e.Node.Nodes){ node.Checked = e.Node.Checked;} 如果鼠标点击太快,变成双击了,就会把节点展开或者收起,但不影响其选中状态

用Treeview遍历XML的全代码
)方法加载相应的XML文件,获取它的所有节点 在用foreach(XmlNode node in 所有节点的变量.ChilrenNode){ \/\/循环遍历时把所要入到的值放到类的对象里面 \/\/用如后在定义一个泛型集合Dictionory<k,v>用于存储对象 } 别的不多说 凡是都要靠自己去思考 上一楼说用DataSet存储也可以 ...

如何遍历WINFORM的TREEVIEW的所有节点
\/\/1.获取TreeView的所有根节点 foreach (TreeNode tn in treeView1.Nodes){ DiGui(tn);} endregion } private void DiGui(TreeNode tn){ \/\/1.将当前节点显示到lable上 label1.Text += "aaa" + " " + tn.Text + "\\r\\n";foreach (TreeNode tnSub in tn.Nodes){ DiGui(tnSub...

vb中treeview控件如何遍历某个选中节点下的所有子节点(不包括子节点...
Private Sub Command1_Click()Dim i As Integer Dim nd As Node List1.Clear Set nd = TreeView1.SelectedItem.Child For i = 1 To TreeView1.SelectedItem.Children List1.AddItem nd.Text Set nd = nd.Next Next End Sub Private Sub Form_Load()Dim i As Integer, j As Integer Tree...

vba多级下拉树状treeview复选如何获得全路径
获得多级下拉树状(TreeView)中选定的全路径步骤:1、在TreeView控件中选中节点时,获取选中节点的文本值。2、通过递归函数遍历TreeView控件的节点,以获取从根节点到选中节点的完整路径。

treeview的根节点为日期时如何日期大小对根节点排序 的C#代码
直接把treeview的所有根节点都遍历出来放到list里面,然后清空treeview的根节点,利用list进行排序,排序完再重新加到treeview里

相似回答