Элемент управления Asp.net TreeView - максимальное количество узлов - PullRequest
0 голосов
/ 13 апреля 2010

У меня есть элемент управления treeView на странице ASP.NET, который будет загружен до 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 #)

Ответы [ 4 ]

1 голос
/ 05 июля 2011
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);
    }
}
0 голосов
/ 07 мая 2014

В конце мы используем Obout treeview , потому что у него нет ограничений древовидного представления asp.net, изложенных на моем вопросе, плюс я могу без проблем загружать тысячи узлов и его виртуальную функцию загрузки отлично.

0 голосов
/ 05 июля 2011

Вы не должны загружать больше, чем видимые узлы одновременно, когда пользователь расширяет уровень узла, вы можете / могли / должны / должны использовать нагрузку по требованию для загрузки дочерних и т. Д. Рекурсивно только при необходимости.

Не перегружайте страницу рендерингом, загружая все узлы, бессмысленно.

поиск по требованию asp.net древовидной структуры и тому подобное ...

0 голосов
/ 13 апреля 2010

Да, это правда, я проверил это практически после прочтения этой ссылки http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/dcacb090-73a2-4845-ab19-e280ea373ffb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...