在不同的aspx页面上重用树视图控件



我正在为我的公司构建一个intranet应用程序来管理部门和员工。它有一个带有菜单和一些身份验证代码的母版页。

在管理部分,我需要加载一个包含所有部门和所有员工的树视图。我从SQL数据库递归地加载它。加载和显示大约需要30秒或更长时间(它有4或5个级别,大约有60个部门和500名员工(。

一些管理页面显示这个树视图,另一些则显示不同的树视图,而另一些则根本没有树视图,所以将其放在主页中似乎是不对的。

如果用户在页面之间导航,我需要一种方法来存储这个树视图,这样用户每次访问带有这个树视图的页面时就不会花费30秒。到目前为止,我提出了将整个树视图保存在会话变量中的方法,当用户访问具有该树视图的页面时,如果它存在于会话变量中,我会从那里加载它,如果不存在,我会将它从数据库加载,并将其放入会话变量中。我想知道这是否是一个好方法,尤其是因为我注意到,在我第一次从会话变量中检索树视图后,它似乎从那里消失了,所以每次检索后我都必须把它放回原处。这给了我一种奇怪的感觉,我可能不太了解发生了什么

我的代码是:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["SessionStoredTreeView"] == null)
{
RecursivelyLoarTreeView(); //takes 30 seconds
Session["SessionStoredTreeView"] = TreeViewOnPage;
}
else
{
TreeView tv = (TreeView)Session["SessionStoredTreeView"];
TreeViewOnPage.Nodes.Clear();
TreeViewOnPage.Nodes.Add(tv.Nodes[0]);
Session["SessionStoredTreeView"] = TreeViewOnPage;
}
}

}

尝试缓存页面或用户控件的某些部分:

  • https://asp.net-tutorials.com/caching/output-cache/
  • https://learn.microsoft.com/en-us/previous-versions/aspnet/h30h475z(v=对100(
  • https://learn.microsoft.com/en-us/previous-versions/aspnet/k4he1ds5(v=对100(

仅在ASPX页面的内容占位符中添加树视图控件。当然,您的母版页必须在这些页中声明。

最新更新