【问题标题】:In APS.NET WebForms, cannot display all the treenodes在 APS.NET WebForms 中,无法显示所有树节点
【发布时间】:2017-09-12 01:53:30
【问题描述】:

我是 C# 和 ASP.NET 方面的新手,我有这个任务,需要为数据库中的所有元素显示 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);
                }
            }
        }
    }
}

【问题讨论】:

    标签: c# asp.net web-applications webforms


    【解决方案1】:

    您的CreateHierarchy 方法有问题。 这条线List&lt;Hierarchy_Table&gt; new_database_source = database_source.Where(x =&gt; 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);
                }
            }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      相关资源
      最近更新 更多