此项目中,有个操作树也就是有无限级的子节点。这个改了三次,在速度上才勉强达到 满意的效果,第一次就是直接从数据库中读取出来,在数据库中的数据中只有4000条的时候,页面显示就需要7S左右,这个是很不理想的。第二次就想将数据库读取出来的数据加个缓存存起来,这样也就第一次访问的时候慢点,以后的访问速度会快不少,但是在实际效果中这个也没达到效果(测试的时候有4000条数据,这个加缓存效果不明显)
第三次,木得办法了,就想还是用Ajax吧,上网上荡了不少资料查看,感觉有点麻烦,后来无意中看到.net有自带的控件就有这效果,相比Ajax差点,但是达到我的要求,异步加载操作树。不多说,直接上代码。很简单代码
前台:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:TreeView ID="OrgTreeView" runat="server"
ExpandDepth="1"
OnTreeNodePopulate="TreeView1_TreeNodePopulate"
ShowLines="True" LineImagesFolder="~/TreeLineImages"
onselectednodechanged="TreeViewList_SelectedNodeChanged">
</asp:TreeView>
<asp:HiddenField ID="hidBM" runat="server" />
<asp:HiddenField ID="hidBMText" runat="server" />
</asp:Content>
后台:
TreeNode sub = new TreeNode();
sub.Text = item_qy["BuildName"].ToString();
sub.Value = "1|" + item_qy["ID"].ToString() + "|" + item_qy["BuildBM"].ToString();
sub.ImageUrl = GetImgByType(item_qy["BuildType"].ToString());
sub.PopulateOnDemand = true;
e.Node.ChildNodes.Add(sub);
第三次,木得办法了,就想还是用Ajax吧,上网上荡了不少资料查看,感觉有点麻烦,后来无意中看到.net有自带的控件就有这效果,相比Ajax差点,但是达到我的要求,异步加载操作树。不多说,直接上代码。很简单代码
前台:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:TreeView ID="OrgTreeView" runat="server"
ExpandDepth="1"
OnTreeNodePopulate="TreeView1_TreeNodePopulate"
ShowLines="True" LineImagesFolder="~/TreeLineImages"
onselectednodechanged="TreeViewList_SelectedNodeChanged">
</asp:TreeView>
<asp:HiddenField ID="hidBM" runat="server" />
<asp:HiddenField ID="hidBMText" runat="server" />
</asp:Content>
后台:
TreeNode sub = new TreeNode();
sub.Text = item_qy["BuildName"].ToString();
sub.Value = "1|" + item_qy["ID"].ToString() + "|" + item_qy["BuildBM"].ToString();
sub.ImageUrl = GetImgByType(item_qy["BuildType"].ToString());
sub.PopulateOnDemand = true;
e.Node.ChildNodes.Add(sub);