我有一个包含超过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分钟)
任何人都可以帮我减少这段时间。或建议任何其他方式来保存&用更少的时间检索这些数据?