【问题标题】:Asp.net TreeView control - maximum number of nodesAsp.net TreeView 控件 - 最大节点数
【发布时间】:2010-04-13 05:08:22
【问题描述】:

我在 ASP.NET 页面中有一个 treeView 控件,它将加载多达 12,000 个不同级别的节点。 例如:

  • 节点 1

    • 节点 1.1 …

      • 节点 1.400

        • 节点 1.400.1

        • 节点 1.400.6400
  • 节点 2
  • 节点 3
  • 节点 4

根据此链接:

http://msdn.microsoft.com/en-us/library/ms529261.aspx

节点限制为 1000。这是正确的还是取决于可用内存(请指定值)?

假设它是正确的。有没有办法将 4600 个子节点分成 300 百个?我在想,如果使用虚拟节点(上一个/下一个导航)来导航这些块,那么 html 页面的加载会很容易。

C# 中的示例代码将不胜感激。 (或者 VB.NET,如果你不能把它翻译成 C#)

【问题讨论】:

    标签: c# asp.net treeview


    【解决方案1】:
    TreeNode node;
    node = new TreeNode(Session["Type"].ToString(), Session["Type"].ToString(), "", "Sub_cat.aspx?MainCat=" + Session["Type"].ToString(), "");
    node.SelectAction = TreeNodeSelectAction.SelectExpand;
    TreeView1.Nodes.Add(node);
    string str1 = "select * from sub_cat where main_cat='"+Session["Type"].ToString() +"'"; ///+ node.Text + "'";
    dt1 = db.gettable(str1);
    for(int x=0;x<dt1.Rows.Count;x++)
    {
        //Session["subcat"] = dt1.Rows[x]["sub_cat"].ToString();
        string sub = dt1.Rows[x]["sub_cat"].ToString();
        TreeNode node1 = new TreeNode(dt1.Rows[x]["sub_cat"].ToString(), dt1.Rows[x]["sub_cat"].ToString(), "", "Product_collection.aspx?sub_cat=" + sub, "");
        node1.SelectAction = TreeNodeSelectAction.SelectExpand;
        //TreeView1.Nodes.Add(node1);
        node.ChildNodes.Add(node1);
    
        string str2 = "select * from product_master where main_cat='" + Session["Type"].ToString() + "' and sub_cat='" + node1.Text + "' order by product_code asc";
        dt2 = db.gettable(str2);
        for(int y=0;y<dt2.Rows.Count;y++)
        {
           // Session["product_code"]=dt2.Rows[y]["product_code"].ToString();
            string code = dt2.Rows[y]["product_code"].ToString();
            TreeNode node2 = new TreeNode(dt2.Rows[y]["product_code"].ToString(), dt2.Rows[y]["product_code"].ToString(), "", "prod_desc.aspx?product_code=" + code, "");
            node2.SelectAction= TreeNodeSelectAction.SelectExpand;
            node1.ChildNodes.Add(node2);
        }
    }
    

    【讨论】:

      【解决方案2】:

      是的,这是真的,我在阅读此链接http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/dcacb090-73a2-4845-ab19-e280ea373ffb后实际上已经检查过了

      【讨论】:

      • 该链接未提及最大 = 1000 个节点,它们指的是 win 表单树视图。如果有帮助,目标浏览器只能是 IE。
      【解决方案3】:

      您不应一次加载多个可见节点,当用户扩展节点级别时,您可以/可以/应该/必须使用按需加载来递归加载子节点等等。

      不要超载加载所有节点的页面渲染,没有意义。

      搜索按需加载 asp.net treeview 和类似...

      【讨论】:

      • 我按需加载节点,但树视图仍然会在客户端浏览器中显示所有加载的节点。 (换句话说,页面可以从 20 个初始节点开始 - 但随着用户展开节点 - 然后控件可能包含数千个节点)。
      【解决方案4】:

      最后,我们使用 Obout treeview,因为它没有我问题中提到的 asp.net 树视图的限制,而且我可以毫无问题地加载 1000 个节点,而且它的虚拟加载功能很棒。

      【讨论】:

        猜你喜欢
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 1970-01-01
        相关资源
        最近更新 更多