asp.net treeview 异步加载
2015-06-11 10:04
603 查看
在使用TreeView控件的时候,如果数据量太大,这个TreeView控件加载会很慢,有时甚至加载失败,
为了更好的使用TreeView控件加载大量的数据,采用异步延迟加载TreeView。
在TreeView每个结点的前面都有个"+"号,点击这个”+“号触发的事件是OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" ,在刚开始加载TreeView的时候,如果结点下面
还有子节点的话,只加载一个子节点;在点击”+“号,触发OnTreeNodeExpanded事件的时候,再加载该结点下的
所有子节点,这样速度就很快了。
aspx代码
aspx.cs代码
为了更好的使用TreeView控件加载大量的数据,采用异步延迟加载TreeView。
在TreeView每个结点的前面都有个"+"号,点击这个”+“号触发的事件是OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" ,在刚开始加载TreeView的时候,如果结点下面
还有子节点的话,只加载一个子节点;在点击”+“号,触发OnTreeNodeExpanded事件的时候,再加载该结点下的
所有子节点,这样速度就很快了。
aspx代码
<asp:TreeView ID="TreeView1" runat="server" Font-Size="Medium" OnTreeNodeExpanded="TreeView1_TreeNodeExpanded" ForeColor="LightSlateGray" LeafNodeStyle-ForeColor="#3333ff" ShowLines="true" ExpandDepth="1"> <SelectedNodeStyle CssClass="selectNode" /> </asp:TreeView>
aspx.cs代码
#region wsw更改树的加载方式 private void LoadNewTree() { DataTable dtp = pagBLL.GetList(" superfuncid=0 order by sort asc").Tables[0]; if (dtp.Rows.Count > 0) { //首先清除树型控件内的结点 this.TreeView1.Nodes.Clear(); for (int i = 0; i < dtp.Rows.Count; i++) { //实例出一个结点 TreeNode Node = new TreeNode(); Node.Text = dtp.Rows[i]["funcname"].ToString(); Node.Value = dtp.Rows[i]["pagefuncid"].ToString(); Node.ToolTip = dtp.Rows[i]["funcurl"].ToString(); Node.ImageUrl = "../../" + dtp.Rows[i]["imageurl"].ToString(); this.TreeView1.Nodes.Add(Node);//增加父节点,这时直接往树TreeView1上加 this.LoadAddSign(Node.ChildNodes,Convert.ToInt32(dtp.Rows[i]["pagefuncid"].ToString()));//wsw更改 TreeView1.CollapseAll(); } } } /// <summary> /// 用于加载显示 树形控件 +号的,加载下面的一个节点。 /// </summary> /// <param name="Conn"></param> /// <param name="tn"></param> /// <param name="DeptId"></param> private void LoadAddSign( TreeNodeCollection tn, int DeptId) //wsw更改 { DataTable table = pagBLL.GetList(" superfuncid=" + DeptId + " order by sort asc").Tables[0]; if (table.Rows.Count > 0) { //加载"一个"1级节点,就是为了显示 + 号 tn.Add(new TreeNode()); } } /// <summary> /// 点击 + 号是节点展开事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void TreeView1_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { TreeNode node = e.Node; if (node.Expanded == true) { string bm = e.Node.Value.ToString();//wsw更改 DataTable table = pagBLL.GetList(" superfuncid=" + bm + " order by sort asc").Tables[0]; node.ChildNodes.Clear(); //清除之前加载的空节点。 if (table.Rows.Count > 0) { for (int i = 0; i < table.Rows.Count; i++) { TreeNode Node = new TreeNode(); Node.Text = table.Rows[i]["funcname"].ToString(); Node.Value = table.Rows[i]["pagefuncid"].ToString(); Node.ToolTip = table.Rows[i]["funcurl"].ToString(); Node.ImageUrl = "../../" + table.Rows[i]["imageurl"].ToString(); node.ChildNodes.Add(Node);//增加父节点,这时直接往树TreeView1上加 this.LoadAddSign(Node.ChildNodes, Convert.ToInt32(table.Rows[i]["pagefuncid"].ToString()));//wsw更改 } } } } #endregion
相关文章推荐
- JasperReports+iReport在eclipse中的使用(转)
- Raspberry PI (Ver 2.0) + PI Cam as a stable RTSP Server
- AspNetPager 免费分页控件7.5.1版发布!
- asp.net留言板 利用富文本编辑器实现美化功能xheditor在asp.net网页的配置和使用
- 【ASP.NET】——Web控件
- 难得的中文ASP.NET 5/MVC 6入门教程
- ASP.NET 表单按钮防止二次提交
- .aspx.cs传值与取值
- NET,ASP.NET,C#,WinFrom之间的联系与区别
- ASP.Net使用jmail和System.Net.Mail发送邮件
- asp.net中使用ueditor
- 理解SVG的viewport,viewBox,preserveAspectRatio
- BeagleBone折腾记(四):驱动打印机
- BeagleBone折腾记(三):接入wifi
- 图片上传裁剪(asp.net)
- BeagleBone折腾记(二):烧录SD卡系统
- VS2012 第一个ASP.NET hello word程序
- ASP.NET运行环境配置
- ASP.NET checkBox value
- ASP.NET 在请求中检测到有潜在危险的 Request.Form 值。