首页前端开发HTMLTreeView控件无限级 一次性加载和异步加载剖析

TreeView控件无限级 一次性加载和异步加载剖析

时间2024-01-25 10:40:10发布访客分类HTML浏览615
导读:收集整理的这篇文章主要介绍了html5教程-TreeView控件无限级 一次性加载和异步加载剖析,觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 [...
收集整理的这篇文章主要介绍了html5教程-TreeView控件无限级 一次性加载和异步加载剖析,觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。 [htML] 

%@ Page Language="C#" AutoEventWireup="true" CodeFile="mSTreeView.aspx.cs" InherITs="MSTreeView" %>  

  

html XMlns="https://www.w3.org/1999/xhtml">  

head runat="server">  

    title> TreeView一次性加载和异步加载/title>  

/head>  

body>  

    form id="form1" runat="server">  

    p>  

        asp:ScriptManager ID="ScriptManager1" runat="server">  

        /asp:ScriptManager>  

        asp:UpdatePanel ID="UpdatePanel1" runat="server">  

            ContentTemplate>  

                table>  

                    tr>  

                        td style="width:200px; height:600px; vertical-align:top; ">  

                            一次性加载br />  

                            asp:TreeView ID="TreeView2" runat="server" ShowLines="true">  

                            /asp:TreeView>  

                        /td>  

                        td style="width:200px; height:600px; vertical-align:top; ">  

                            异步加载br />  

                            asp:TreeView ID="TreeView1" runat="server"  ShowLines="true"  

                                OnTreeNodePopulate="TreeView1_TreeNodePopulate" EnableClientScript="true" ExpandDepth="0">  

                            /asp:TreeView>  

                        /td>  

                    /tr>  

                /table>  

            /ContentTemplate>  

        /asp:UpdatePanel>  

    /p>  

    /form>  

/body>  

/html>  

[csharp]  

using System;  

using System.Collections.Generic;  

using System.Linq;  

using System.Web;  

using System.Data;  

using System.Web.UI;  

using System.Web.UI.WebControls;  

  

public partial class MSTreeView : System.Web.UI.Page  

{  

  

    PRotected DataTable dt = createDT();  

    protected void Page_Load(object sender, Eventargs e)  

    {  

        if (!IsPostBack)  

        {  

            //一次性加载 适用于小数据量  

            TreeView2.Nodes.Clear();  

            CreateLevelTreeView(TreeView2, dt, "module_name", "module_id", "module_fatherid");  

            TreeView2.ExpandAll();  

  

            //异步加载 适用于大数据量  

            TreeView1.Nodes.Clear();  

            DataView dv = dt.DefaultView;  

            dv.RowFilter = " module_fatherid='0' ";              

            Bind_Root(dv.ToTable(), "module_name", "module_id");  

        }  

  

    }  

 

    #region 异步加载TreeView  

    /// summary>  

    /// 绑定父节点  

    /// /summary>  

    /// param name="dt"> 数据源/param>  

    /// param name="text"> text/param>  

    /// param name="value"> value/param>  

    private void Bind_Root(DataTable dt,string text,string value)  

    {  

        TreeNode tn;  

        for (int i = 0; i dt.Rows.Count; i++)  

        {  

            tn = new TreeNode();  

            tn.Value = dt.Rows[i][value].ToString();  

            tn.Text = dt.Rows[i][text].ToString();  

            //判断是否有子节点  

            if (Check_Child(tn.Value))  

            {  

                tn.PopulateOnDemand = true;  

                tn.Expanded = false;  

            }  

            TreeView1.Nodes.Add(tn);  

        }  

    }  

  

    /// summary>  

    /// 绑定节点的子节点  

    /// /summary>  

    /// param name="treeNode"> /param>  

    /// param name="p"> /param>  

    private void Bind_Child(TreeNode treeNode, string fatherID, string text, string value)  

    {  

        TreeNode tn;  

        DataRow[] drExist = dt.Select(" module_fatherid= '" + fatherID + "'");  

        for (int i = 0; i drExist.Length; i++)  

        {  

            tn = new TreeNode();  

            tn.Value = drExist[i][value].ToString();  

            tn.Text = drExist[i][text].ToString();  

            //检验是否有子节点  

            if (Check_Child(tn.Value))  

            {  

                tn.PopulateOnDemand = true;  

                tn.Expanded = false;  

            }  

            treeNode.ChildNodes.Add(tn);  

        }  

    }  

  

    /// summary>  

    /// 判断是否有子节点  

    /// /summary>  

    /// param name="pre_Val"> 父类ID/param>  

    /// returns> /returns>  

    private bool Check_Child(string pre_Val)  

    {  

        DataRow[] dr = dt.Select(" module_fatherid= '" + pre_Val + "'");  

        bool exist = (dr.Length > 0) ? true : false;  

        return exist;  

    }  

  

  

    protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)  

    {  

        Bind_Child(e.Node, e.Node.Value.ToString(), "module_name", "module_id");  

    }  

    #endregion  

 

    #region 一次性加载TreeView  

    /// summary>     

    /// 创建无限分级目录树TreeView     

    /// /summary>     

    /// param name="treeview"> TreeView空间/param>     

    /// param name="dt"> 数据源DataTable/param>     

    /// param name="text"> text字段/param>     

    /// param name="value"> value字段/param>     

    /// param name="parentid"> 深度字段 例如parentid/param>     

    public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string parentid)  

    {  

        DataView dv = dt.DefaultView;  

        dv.RowFilter = parentid + " ='0'";  

        foreach (DataRowView drv in dv)  

        {  

            TreeNode node = new TreeNode();  

            node.Text = drv[text].ToString();  

            node.Value = drv[value].ToString();  

            node.Expanded = false;  

            treeview.Nodes.Add(node);  

            CreatTreeViewChildNode(dv, node, text, value, parentid);  

        }  

    }  

  

    /// summary>     

    /// 递归绑定子节点     

    /// /summary>     

    /// param name="dv"> 源DataView/param>     

    /// param name="parentNode"> 当前节点/param>     

    /// param name="text"> text字段/param>     

    /// param name="value"> value字段/param>     

    /// param name="parentid"> 深度字段 例如parentid/param>     

    private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string parentid)  

    {  

        dv.RowFilter = parentid + " ='" + parentNode.Value + "' ";  

        foreach (DataRowView row in dv)  

        {  

            TreeNode replyNode = new TreeNode();  

            replyNode.Text = row[text].ToString();  

            replyNode.Value = row[value].ToString();  

            replyNode.Expanded = false;  

            parentNode.ChildNodes.Add(replyNode);  

            CreatTreeViewChildNode(dv, replyNode, text, value, parentid);  

        }  

    }    

    #endregion  

 

    #region 创建数据  

    private static DataTable createDT()  

    {  

        DataTable dt = new DataTable();  

        dt.Columns.Add("module_id");  

        dt.Columns.Add("module_name");  

        dt.Columns.Add("module_fatherid");  

        dt.Columns.Add("module_url");  

        dt.Columns.Add("module_order");  

  

        dt.Rows.Add("C1", "全国", "0", "", "1");  

        dt.Rows.Add("M01", "广东", "C1", "", "1");  

  

        dt.Rows.Add("M0101", "深圳", "M01", "", "100");  

        dt.Rows.Add("M010101", "南山区", "M0101", "", "1000");  

        dt.Rows.Add("M010102", "罗湖区", "M0101", "", "1001");  

        dt.Rows.Add("M010103", "福田区", "M0101", "", "1002");  

        dt.Rows.Add("M010104", "宝安区", "M0101", "", "1003");  

        dt.Rows.Add("M010105", "龙岗区", "M0101", "", "1004");  

  

        dt.Rows.Add("M01010301", "上梅林", "M010103", "", "1002001");  

        dt.Rows.Add("M01010302", "下梅林", "M010103", "", "1002002");  

        dt.Rows.Add("M01010303", "车公庙", "M010103", "", "1002003");  

        dt.Rows.Add("M01010304", "竹子林", "M010103", "", "1002004");  

        dt.Rows.Add("M01010305", "八卦岭", "M010103", "", "1002005");  

        dt.Rows.Add("M01010306", "华强北", "M010103", "", "1002006");  

  

        dt.Rows.Add("M0102", "广州", "M01", "", "101");  

        dt.Rows.Add("M010201", "越秀区", "M0102", "", "1105");  

        dt.Rows.Add("M010202", "海珠区", "M0102", "", "1106");  

        dt.Rows.Add("M010203", "天河区", "M0102", "", "1107");  

        dt.Rows.Add("M010204", "白云区", "M0102", "", "1108");  

        dt.Rows.Add("M010205", "黄埔区", "M0102", "", "1109");  

        dt.Rows.Add("M010206", "荔湾区", "M0102", "", "1110");  

        dt.Rows.Add("M010207", "罗岗区", "M0102", "", "1111");  

        dt.Rows.Add("M010208", "南沙区", "M0102", "", "1112");  

        return dt;  

    }  

    #endregion  

}  

[html] 

%@ Page Language="C#" AutoEventWireup="true" CodeFile="MSTreeView.aspx.cs" Inherits="MSTreeView" %>  

  

html xmlns="https://www.w3.org/1999/xhtml">  

head runat="server">  

    title> TreeView一次性加载和异步加载/title>  

/head>  

body>  

    form id="form1" runat="server">  

    p>  

        asp:ScriptManager ID="ScriptManager1" runat="server">  

        /asp:ScriptManager>  

        asp:UpdatePanel ID="UpdatePanel1" runat="server">  

            ContentTemplate>  

                table>  

                    tr>  

                        td style="width:200px; height:600px; vertical-align:top; ">  

                            一次性加载br />  

                            asp:TreeView ID="TreeView2" runat="server" ShowLines="true">  

                            /asp:TreeView>  

                        /td>  

                        td style="width:200px; height:600px; vertical-align:top; ">  

                            异步加载br />  

                            asp:TreeView ID="TreeView1" runat="server"  ShowLines="true"  

                                OnTreeNodePopulate="TreeView1_TreeNodePopulate" EnableClientScript="true" ExpandDepth="0">  

                            /asp:TreeView>  

                        /td>  

                    /tr>  

                /table>  

            /ContentTemplate>  

        /asp:UpdatePanel>  

    /p>  

    /form>  

/body>  

/html>  

[csharp]  

using System;  

using System.Collections.Generic;  

using System.Linq;  

using System.Web;  

using System.Data;  

using System.Web.UI;  

using System.Web.UI.WebControls;  

  

public partial class MSTreeView : System.Web.UI.Page  

{  

  

    protected DataTable dt = createDT();  

    protected void Page_Load(object sender, EventArgs e)  

    {  

        if (!IsPostBack)  

        {  

            //一次性加载 适用于小数据量  

            TreeView2.Nodes.Clear();  

            CreateLevelTreeView(TreeView2, dt, "module_name", "module_id", "module_fatherid");  

            TreeView2.ExpandAll();  

  

            //异步加载 适用于大数据量  

            TreeView1.Nodes.Clear();  

            DataView dv = dt.DefaultView;  

            dv.RowFilter = " module_fatherid='0' ";              

            Bind_Root(dv.ToTable(), "module_name", "module_id");  

        }  

  

    }  

 

    #region 异步加载TreeView  

    /// summary>  

    /// 绑定父节点  

    /// /summary>  

    /// param name="dt"> 数据源/param>  

    /// param name="text"> text/param>  

    /// param name="value"> value/param>  

    private void Bind_Root(DataTable dt,string text,string value)  

    {  

        TreeNode tn;  

        for (int i = 0; i dt.Rows.Count; i++)  

        {  

            tn = new TreeNode();  

            tn.Value = dt.Rows[i][value].ToString();  

            tn.Text = dt.Rows[i][text].ToString();  

            //判断是否有子节点  

            if (Check_Child(tn.Value))  

            {  

                tn.PopulateOnDemand = true;  

                tn.Expanded = false;  

            }  

            TreeView1.Nodes.Add(tn);  

        }  

    }  

  

    /// summary>  

    /// 绑定节点的子节点  

    /// /summary>  

    /// param name="treeNode"> /param>  

    /// param name="p"> /param>  

    private void Bind_Child(TreeNode treeNode, string fatherID, string text, string value)  

    {  

        TreeNode tn;  

        DataRow[] drExist = dt.Select(" module_fatherid= '" + fatherID + "'");  

        for (int i = 0; i drExist.Length; i++)  

        {  

            tn = new TreeNode();  

            tn.Value = drExist[i][value].ToString();  

            tn.Text = drExist[i][text].ToString();  

            //检验是否有子节点  

            if (Check_Child(tn.Value))  

            {  

                tn.PopulateOnDemand = true;  

                tn.Expanded = false;  

            }  

            treeNode.ChildNodes.Add(tn);  

        }  

    }  

  

    /// summary>  

    /// 判断是否有子节点  

    /// /summary>  

    /// param name="pre_Val"> 父类ID/param>  

    /// returns> /returns>  

    private bool Check_Child(string pre_Val)  

    {  

        DataRow[] dr = dt.Select(" module_fatherid= '" + pre_Val + "'");  

        bool exist = (dr.Length > 0) ? true : false;  

        return exist;  

    }  

  

  

    protected void TreeView1_TreeNodePopulate(object sender, TreeNodeEventArgs e)  

    {  

        Bind_Child(e.Node, e.Node.Value.ToString(), "module_name", "module_id");  

    }  

    #endregion  

 

    #region 一次性加载TreeView  

    /// summary>     

    /// 创建无限分级目录树TreeView     

    /// /summary>     

    /// param name="treeview"> TreeView空间/param>     

    /// param name="dt"> 数据源DataTable/param>     

    /// param name="text"> text字段/param>     

    /// param name="value"> value字段/param>     

    /// param name="parentid"> 深度字段 例如parentid/param>     

    public static void CreateLevelTreeView(TreeView treeview, DataTable dt, string text, string value, string parentid)  

    {  

        DataView dv = dt.DefaultView;  

        dv.RowFilter = parentid + " ='0'";  

        foreach (DataRowView drv in dv)  

        {  

            TreeNode node = new TreeNode();  

            node.Text = drv[text].ToString();  

            node.Value = drv[value].ToString();  

            node.Expanded = false;  

            treeview.Nodes.Add(node);  

            CreatTreeViewChildNode(dv, node, text, value, parentid);  

        }  

    }  

  

    /// summary>     

    /// 递归绑定子节点     

    /// /summary>     

    /// param name="dv"> 源DataView/param>     

    /// param name="parentNode"> 当前节点/param>     

    /// param name="text"> text字段/param>     

    /// param name="value"> value字段/param>     

    /// param name="parentid"> 深度字段 例如parentid/param>     

    private static void CreatTreeViewChildNode(DataView dv, TreeNode parentNode, string text, string value, string parentid)  

    {  

        dv.RowFilter = parentid + " ='" + parentNode.Value + "' ";  

        foreach (DataRowView row in dv)  

        {  

            TreeNode replyNode = new TreeNode();  

            replyNode.Text = row[text].ToString();  

            replyNode.Value = row[value].ToString();  

            replyNode.Expanded = false;  

            parentNode.ChildNodes.Add(replyNode);  

            CreatTreeViewChildNode(dv, replyNode, text, value, parentid);  

        }  

    }    

    #endregion  

 

    #region 创建数据  

    private static DataTable createDT()  

    {  

        DataTable dt = new DataTable();  

        dt.Columns.Add("module_id");  

        dt.Columns.Add("module_name");  

        dt.Columns.Add("module_fatherid");  

        dt.Columns.Add("module_url");  

        dt.Columns.Add("module_order");  

  

        dt.Rows.Add("C1", "全国", "0", "", "1");  

        dt.Rows.Add("M01", "广东", "C1", "", "1");  

  

        dt.Rows.Add("M0101", "深圳", "M01", "", "100");  

        dt.Rows.Add("M010101", "南山区", "M0101", "", "1000");  

        dt.Rows.Add("M010102", "罗湖区", "M0101", "", "1001");  

        dt.Rows.Add("M010103", "福田区", "M0101", "", "1002");  

        dt.Rows.Add("M010104", "宝安区", "M0101", "", "1003");  

        dt.Rows.Add("M010105", "龙岗区", "M0101", "", "1004");  

  

        dt.Rows.Add("M01010301", "上梅林", "M010103", "", "1002001");  

        dt.Rows.Add("M01010302", "下梅林", "M010103", "", "1002002");  

        dt.Rows.Add("M01010303", "车公庙", "M010103", "", "1002003");  

        dt.Rows.Add("M01010304", "竹子林", "M010103", "", "1002004");  

        dt.Rows.Add("M01010305", "八卦岭", "M010103", "", "1002005");  

        dt.Rows.Add("M01010306", "华强北", "M010103", "", "1002006");  

  

        dt.Rows.Add("M0102", "广州", "M01", "", "101");  

        dt.Rows.Add("M010201", "越秀区", "M0102", "", "1105");  

        dt.Rows.Add("M010202", "海珠区", "M0102", "", "1106");  

        dt.Rows.Add("M010203", "天河区", "M0102", "", "1107");  

        dt.Rows.Add("M010204", "白云区", "M0102", "", "1108");  

        dt.Rows.Add("M010205", "黄埔区", "M0102", "", "1109");  

        dt.Rows.Add("M010206", "荔湾区", "M0102", "", "1110");  

        dt.Rows.Add("M010207", "罗岗区", "M0102", "", "1111");  

        dt.Rows.Add("M010208", "南沙区", "M0102", "", "1112");  

        return dt;  

    }  

    #endregion  

}  

觉得可用,就经常来吧! 欢迎评论哦! html5教程,巧夺天工,精雕玉琢。小宝典献丑了!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

ClassdivHTMLpost-format-galleryTemplate

若转载请注明出处: TreeView控件无限级 一次性加载和异步加载剖析
本文地址: https://pptw.com/jishu/586423.html
HTML5 Canva浏览器兼容检查 HTML5 2D游戏引擎研发系列 第六章 (Canvas技术篇-画布技术-混色特效和粒子)

游客 回复需填写必要信息