使用递归函数在TreeView中加载数据 [英] Load Data in TreeView with recursive function
本文介绍了使用递归函数在TreeView中加载数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
嗨;
i在SQL Server中有一个表,在树视图中加载数据使用此代码(在具有递归功能的实体框架中):
我的桌子有三个花园:
1 - node_Index
2 - node_ParentIndex >
2 - node_Name
Hi;
i have one table in SQL Server and Load Data in tree View with this code (in Entity Framework with recursive function) :
my table have three feild :
1 - node_Index
2 - node_ParentIndex
2 - node_Name
private void LoadTreeView1()
{
// db is my database and tb1 is my table
Table1 tb1 = new Table1();
tv1.Nodes.Clear();
using (var db = new dataBase1Entities())
{
foreach (var item in db.Table1.Where(C => C.node_ParentIndex == 0))
{
TreeNode tnParent = new TreeNode(item.node_Name);
tv1.Nodes.Add(tnParent);
int value = (int)item.node_Index;
tnParent.Expand();
FillChild1(tnParent, value);
}
}
}
public int FillChild1(TreeNode parent, int parentIndex)
{
Table1 tb1 = new Table1();
using (var db = new dataBase1Entities())
{
if ((db.Table1.Count() > 0))
{
foreach (var item in db.Table1.Where(C => C.node_ParentIndex == parentIndex))
{
TreeNode child = new TreeNode(item.node_Name.Trim());
parent.Nodes.Add(child);
int value = (int)item.node_Index;
child.Collapse();
FillChild1(child, value);
}
return 0;
}
else
{
return 0;
}
}
}
但此代码不起作用并创造无限循环,我不能结束它。
请帮帮我!
but this Codes not work and create infinite Loop and i can not end it.
please help me !
推荐答案
做这样的事情。
将null传递给第一次使用的item参数。
我手工编写但我希望它可以工作
Hi, do something like this.
pass null to item parameter for the first using.
I wrote it by hand but I hope it will work
private void FillTreeItems(IEnumerable<node> myTables, TreeViewItem item)
{
foreach (var table in myTables)
{
var newItem = new TreeViewItem()
{
//Some Code...
};
if (item == null)
MyTreeView.Items.Add(newItem);
else
item.Items.Add(newItem);
if (!table.Nodes.Any())
continue;
foreach (var node in table.Nodes)
{
FillTreeItems(table.Nodes, newItem);
}
}
}
这篇关于使用递归函数在TreeView中加载数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文