树视图加载节点需要很长时间

时间:2016-05-27 12:11:35

标签: c# asp.net treeview

我有一个包含超过25,000个文件夹的文件夹结构。每次用户复制新根节点中的现有结构时,此结构将增加2000-3000个文件夹。

我的桌子有3列。

FOLDER_ID  FOLDER_NAME  PARENT_FOLDER_ID
1           Folder1
2           Folder1.1        1
3           Folder1.2        1
4           Folder1.1.1      2
5           Folder1.1.2      2
6           Folder1.2.1      3
7           Folder1.2.2      3

我在数据库中保存整个结构&使用以下代码检索它。

public void PopulateTree(TreeView objTreeView)
    {
        objTreeView.Nodes.Clear();
        dt = obj.Get_Folder_Structure(1);

        if (dt != null)
        {
            foreach (DataRow dataRow in dt.Rows)
            {
                if (dataRow["PARENT_FOLDER_ID"] == DBNull.Value)
                {
                    TreeNode treeRoot = new TreeNode();
                    treeRoot.Text = dataRow["FOLDER_NAME"].ToString();
                    treeRoot.Value = dataRow["FOLDER_ID"].ToString();
                    // treeRoot.ImageUrl = "~/Images/Folder1.gif";
                    //   treeRoot.ExpandAll();
                    objTreeView.Nodes.Add(treeRoot);

                    foreach (TreeNode childnode in GetChildNode(Convert.ToInt64(dataRow["FOLDER_ID"])))
                    {
                        treeRoot.ChildNodes.Add(childnode);
                    }
                }
            }
        }
    }


    private TreeNodeCollection GetChildNode(long parentid)
    {
        TreeNodeCollection childtreenodes = new TreeNodeCollection();
        DataView dataView1 = new DataView(dt);
        String strFilter = "" + "PARENT_FOLDER_ID" + "=" + parentid.ToString() + "";
        dataView1.RowFilter = strFilter;

        if (dataView1.Count > 0)
        {
            foreach (DataRow dataRow in dataView1.ToTable().Rows)
            {
                TreeNode childNode = new TreeNode();
                childNode.Text = dataRow["FOLDER_NAME"].ToString();
                childNode.Value = dataRow["FOLDER_ID"].ToString();
                //     childNode.ImageUrl = "~/Images/oInboxF.gif";
                //    childNode.ExpandAll();

                foreach (TreeNode cnode in GetChildNode(Convert.ToInt64(dataRow["FOLDER_ID"])))
                {
                    childNode.ChildNodes.Add(cnode);
                }
                childtreenodes.Add(childNode);
            }
        }
        return childtreenodes;
    }

使用此代码,一切正常。我遇到的唯一问题是加载我的网页需要很长时间。(超过15分钟)

任何人都可以帮我减少这段时间。或建议任何其他方式来保存&用更少的时间检索这些数据?

0 个答案:

没有答案