使用递归函数在TreeView中加载数据 [英] Load Data in TreeView with recursive function

查看:188
本文介绍了使用递归函数在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆