• asp.net treeview 异步加载


    在使用TreeView控件的时候,如果数据量太大,这个TreeView控件加载会很慢,有时甚至加载失败,

    为了更好的使用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
  • 相关阅读:
    部署第二个master节点
    Spark On YARN使用时上传jar包过多导致磁盘空间不够。。。
    Spark1.3使用外部数据源时条件过滤只要是字符串类型的值均报错
    spark1.3编译过程中遇到的一个坑
    Hive On Spark hiveserver2方式使用
    Hive On Spark概述
    Hive On Spark环境搭建
    RDD常用方法之subtract&intersection&cartesian
    SparkSQL DataFrames操作
    通过Spark SQL关联查询两个HDFS上的文件操作
  • 原文地址:https://www.cnblogs.com/colder/p/4568216.html
Copyright © 2020-2023  润新知