C# 在APS.NET WebForms中,无法显示所有树节点

C# 在APS.NET WebForms中,无法显示所有树节点,c#,asp.net,web-applications,webforms,C#,Asp.net,Web Applications,Webforms,我是C#和ASP.NET方面的新手,我有这个taks,它需要为数据库中的所有元素显示TreeView(父-子) 我在Default.aspx.cs中编写了这段代码,它确实显示了根(第一个父母),但我无法获得任何子级。你能帮我解决这个问题吗? 提前谢谢 守则如下: namespace HierarchyApp { public partial class _Default : Page { protected void Page_Load(object sender

我是C#和ASP.NET方面的新手,我有这个taks,它需要为数据库中的所有元素显示TreeView(父-子)

我在Default.aspx.cs中编写了这段代码,它确实显示了根(第一个父母),但我无法获得任何子级。你能帮我解决这个问题吗? 提前谢谢

守则如下:

namespace HierarchyApp
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Populate_List();
            }
        }

        private void Populate_List()
        {
            List<Hierarchy_Table> All_Items = new List<Hierarchy_Table>();
            using (Hierarchy_DBEntities dc = new Hierarchy_DBEntities())
            {
                All_Items = dc.Hierarchy_Table.ToList();
            }
            CreateHierarchy(0, null, All_Items);
        }

        private void CreateHierarchy(int Parent_ID, TreeNode Parent, List<Hierarchy_Table> database_source)
        {
            List<Hierarchy_Table> new_database_source = database_source.Where(x => x.PARENT_ID.Equals(Parent_ID)).ToList();
            foreach (var item in new_database_source)
            {
                TreeNode newItem = new TreeNode(item.NAME, item.ID.ToString());
                if (Parent == null)
                {
                    Hierarchy_Menu.Nodes.Add(newItem);
                }
                else
                {
                    {
                        Parent.ChildNodes.Add(newItem);
                    }
                    CreateHierarchy(item.ID, newItem, database_source);
                }
            }
        }
    }
}
namespace HierarchyApp
{
公共部分类\u默认值:第页
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
填充_列表();
}
}
私有无效填充列表()
{
列出所有项目=新建列表();
使用(Hierarchy\u DBEntities dc=new Hierarchy\u DBEntities())
{
All_Items=dc.Hierarchy_Table.ToList();
}
CreateHierarchy(0,null,所有_项);
}
私有void CreateHierarchy(int-Parent\u-ID、TreeNode-Parent、List-database\u-source)
{
列出新的_数据库_源=数据库_源。其中(x=>x.PARENT_ID.Equals(PARENT_ID)).ToList();
foreach(新数据库\u源中的var项)
{
TreeNode newItem=新的TreeNode(item.NAME,item.ID.ToString());
如果(父项==null)
{
层次菜单.节点.添加(newItem);
}
其他的
{
{
Parent.ChildNodes.Add(newItem);
}
CreateHierarchy(item.ID、newItem、数据库\ u源);
}
}
}
}
}

您的
CreateHierarchy
方法有问题。 这一行
List new_database_source=database_source.Where(x=>x.PARENT_ID.Equals(PARENT_ID)).ToList()在我看来不太合适。您真正应该查看的是当前父节点的ID值

下面是更新的代码示例

private void CreateHierarchy(int Parent_ID, TreeNode Parent, List<Hierarchy_Table> database_source)
        {
            List<Hierarchy_Table> new_database_source = database_source.Where(x => Parent == null ? x.PARENT_ID == 0 : x.PARENT_ID.Equals(int.Parse(Parent.Value))).ToList();
            foreach (var item in new_database_source)
            {
                TreeNode newItem = new TreeNode(item.NAME, item.ID.ToString());
                if (Parent == null)
                {
                    Hierarchy_Menu.Nodes.Add(newItem);
                }
                else
                {
                    Parent.ChildNodes.Add(newItem);
                }
                CreateHierarchy(item.ID, newItem, database_source);
            }
        }
private void CreateHierarchy(int-Parent\u-ID、TreeNode-Parent、List-database\u-source)
{
列出新的_数据库_源=数据库_源。其中(x=>Parent==null?x.Parent_ID==0:x.Parse_ID.Equals(int.Parse(Parent.Value))).ToList();
foreach(新数据库\u源中的var项)
{
TreeNode newItem=新的TreeNode(item.NAME,item.ID.ToString());
如果(父项==null)
{
层次菜单.节点.添加(newItem);
}
其他的
{
Parent.ChildNodes.Add(newItem);
}
CreateHierarchy(item.ID、newItem、数据库\ u源);
}
}

希望它有帮助

您的
CreateHierarchy
方法有问题。 这一行
List new_database_source=database_source.Where(x=>x.PARENT_ID.Equals(PARENT_ID)).ToList()在我看来不太合适。您真正应该查看的是当前父节点的ID值

下面是更新的代码示例

private void CreateHierarchy(int Parent_ID, TreeNode Parent, List<Hierarchy_Table> database_source)
        {
            List<Hierarchy_Table> new_database_source = database_source.Where(x => Parent == null ? x.PARENT_ID == 0 : x.PARENT_ID.Equals(int.Parse(Parent.Value))).ToList();
            foreach (var item in new_database_source)
            {
                TreeNode newItem = new TreeNode(item.NAME, item.ID.ToString());
                if (Parent == null)
                {
                    Hierarchy_Menu.Nodes.Add(newItem);
                }
                else
                {
                    Parent.ChildNodes.Add(newItem);
                }
                CreateHierarchy(item.ID, newItem, database_source);
            }
        }
private void CreateHierarchy(int-Parent\u-ID、TreeNode-Parent、List-database\u-source)
{
列出新的_数据库_源=数据库_源。其中(x=>Parent==null?x.Parent_ID==0:x.Parse_ID.Equals(int.Parse(Parent.Value))).ToList();
foreach(新数据库\u源中的var项)
{
TreeNode newItem=新的TreeNode(item.NAME,item.ID.ToString());
如果(父项==null)
{
层次菜单.节点.添加(newItem);
}
其他的
{
Parent.ChildNodes.Add(newItem);
}
CreateHierarchy(item.ID、newItem、数据库\ u源);
}
}
希望能有帮助