前台html标签(asyncData.aspx页面....用于展示的页面)

<head runat="server">
    <title></title>
    <link href="JQuery%20ZTree/css/demo.css" rel="stylesheet" type="text/css" />
    <link href="JQuery%20ZTree/css/zTreeStyle/zTreeStyle.css" rel="stylesheet" type="text/css" />
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="JQuery%20ZTree/js/jquery.ztree.core-3.5.js" type="text/javascript"></script>
    <script type="text/javascript">
            var zNodes;
             var zTree;
            //setting异步加载的设置
            var setting = {
                async: {
                enable:true, //表示异步加载生效
                url: "WebData.aspx", // 异步加载时访问的页面
                autoParam: ["id"], // 异步加载时自动提交的父节点属性的参数
                otherParam:["ajaxMethod",'AnsyData'], //ajax请求时提交的参数
                type:'post',
                dataType:'json'
               },
                checkable: true,
                showIcon: true,
                showLine: true, // zTree显示连接线
                data: {  //data的设置表示json数据是以这种格式显示的     zNodes = [{ "id": 1, "pId": 0, "name": "zhangsan" } ,{ "id": 2, "pId": 1, "name": "lisi" }]; 用pId来标识父子节点的关系
                simpleData: {
                    enable: true
                }
               },
                expandSpeed: "", // 设置 zTree 节点展开、折叠的动画速度,默认为"fast",""表示无动画
                callback: { // 回调函数
                    onClick: zTreeOnClick, // 单击鼠标事件
                    asyncSuccess: zTreeOnAsyncSuccess //异步加载成功事件
                }
            };
            $(document).ready(function () {
                Inint();
                $.fn.zTree.init($("#treeDemo"), setting, zNodes);
           });
            //初始化加载节点
            function Inint(){
                $.ajax({
                    url: 'WebData.aspx',
                    type: 'post',
                    dataType: 'json',
                     async: false,
                    data: { 'ajaxMethod': 'FirstAnsyData' },
                    success: function (data) {
                        zNodes = data;
                    }
                });
            };
            //单击时获取zTree节点的Id,和value的值
            function zTreeOnClick(event, treeId, treeNode, clickFlag) {
                treeValue = treeNode.id + "~" + treeNode.name;
                alert(treeNode.id + "~" + treeNode.name);
            };
            function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {   
            } 
    </script>
</head>
<body>
    <form id="form1" runat="server">
   <div class="content_wrap" style="float:left;width:300px;">
    <div class="zTreeDemoBackground left">
        <ul id="treeDemo" class="ztree"></ul>
    </div>
    </div>
    </form>
</body>

WebData.aspx页面代码(用来处理数据的页面,有些地方写的比较简单...不是那么严谨)

public partial class WebData : System.Web.UI.Page
    {
        string strConn = @"Data Source=ANDY-PC\SQLEXPRESS;Initial Catalog=Test;Integrated Security=True";
        protected void Page_Load(object sender, EventArgs e)
        {
            #region
            try
            {
                string ajaxMethod = Request["ajaxMethod"].ToString();//取得前台ajax请求的方法名称
                System.Reflection.MethodInfo method = this.GetType().GetMethod(ajaxMethod);
                if (method != null)
                {
                    method.Invoke(this, new object[] { });//通过方法名称指向对应的方法
                }
            }
            catch (Exception)
            {

throw;
            }
            finally
            {
                Response.End();
            }
            #endregion

}
        /// <summary>
        /// 异步加载当前节点的子节点
        /// </summary>
        public void AnsyData()   
        {
            List<object> lsNode = new List<object>();
           try
            {            
                 int id = int.Parse(Request.Params["id"]);
                 using (SqlConnection conn = new SqlConnection(strConn))
                 {
                    string sql = "select * from OrginTree where OrgParent=" + id + "";
                    DataTable table = new DataTable();
                    SqlDataAdapter dt = new SqlDataAdapter(sql, conn);
                    dt.Fill(table);
                    lsNode = getList(table);
                    Response.Write(JsonConvert.SerializeObject(lsNode));
                 }
            }
            catch (Exception)
            {
        
                throw;
            }
        }
        /// <summary>
        /// 判断当前节点是否还有子节点
        /// </summary>
        /// <param name="ParentId">父节点Id</param>
        /// <returns>bool类型</returns>
        public bool isParentTrue(int ParentId)  
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(strConn))
                {
                    conn.Open();
                    string sql = "select * from OrginTree where OrgParent ="+ParentId+"";
                    DataTable table = new DataTable();
                    SqlDataAdapter dt = new SqlDataAdapter(sql, conn);
                    dt.Fill(table);
                    return table.Rows.Count >=1 ? true :false;
                }
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        /// <summary>
        /// 初始化第一次节点加载
        /// </summary>
        public void FirstAnsyData()
        {
            try
            {
                TableEnjson tbEnjson = new TableEnjson();
                List<object> lsNode = new List<object>();
                using (SqlConnection conn = new SqlConnection(strConn))
                {
                    conn.Open();
                    string sql = "select * from OrginTree where OrgParent is null";
                    DataTable table = new DataTable();
                    SqlDataAdapter dt = new SqlDataAdapter(sql, conn);
                    dt.Fill(table);
                    lsNode = getList(table);
                    Response.Write(JsonConvert.SerializeObject(lsNode));//用到了Newtonsoft.dll 转化成Json格式
                }
            }
            catch (Exception)
            {

throw;
            }
          
        }
        /// <summary>
        /// 把数据形式转换成zTree的json数据格式
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public List<object> getList(DataTable table)
        {
            try
            {
                List<object> lsNode = new List<object>();
                bool isParent = true;
                foreach (DataRow row in table.Rows)
                {
                    var ParentId = string.IsNullOrEmpty(row["OrgParent"].ToString()) ? 0 : row["OrgParent"];
                    if (isParentTrue(int.Parse(row["OrgId"].ToString())))
                        isParent = true;
                    else
                        isParent = false;
                    var zTreeData = new
                    {
                        id = row["OrgId"],
                        pId = ParentId,
                        name = row["OrgName"],
                        isParent = isParent
                    };
                    lsNode.Add(zTreeData);
                }
                return lsNode;
            }
            catch (Exception)
            {
                
                throw;
            }
        }
    }

 数据库的格式

CREATE TABLE OrginTree
(
    OrgId INT PRIMARY KEY IDENTITY(1,1),
    OrgName NVARCHAR(30), //节点的名称
    ORgParent INT         //父节点的Id
)

转载于:https://www.cnblogs.com/andyNet/archive/2013/06/10/3130270.html

zTree结合Asp.net实现异步加载数据(写的可能有点简单....)相关推荐

  1. SharePoint 实现ajax异步加载数据的几种方式

    初到公司,由原想的asp.net开发转向了SharePoint(简称SP)开发,个人感觉与之前差别不大,今天用sp实现异步加载数据的时候遇到点问题,之前在asp.net下一步都是用 jquery.aj ...

  2. 学习下ECharts 异步加载数据

    ECharts 通常数据设置在 setOption 中,如果我们需要异步加载数据,可以配合 jQuery等工具,在异步获取数据后通过 setOption 填入数据和配置项就行. ECharts 通常数 ...

  3. ASP.NET MVC动态加载数据

    ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分: <table><tr><th styl ...

  4. ajax实现向上正在加载,向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)

    /**** desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码 ajaxdata_url ajax异步的URL 如data.php page_val_name a ...

  5. 新手教程:不写JS,在MIP页中实现异步加载数据

    从需求谈起:在 MIP 页中异步加载数据 MIP(移动网页加速器) 的 加速原理 除了靠谱的 MIP-Cache CDN 加速外,最值得一提的就是组件系统.所有 JS 交互都需要使用 MIP 组件实现 ...

  6. JQuery Datatables 动态配置参数异步加载数据

    背景需求 在前端动态设置datatables需要传递到后端的查询参数,异步加载返回的数据.点击这里进入datatables中文网异步加载数据说明 直接上代码 var table; var url = ...

  7. highcharts.js两种数据绑定方式和异步加载数据的使用

    一,我们先来看看异步加载数据的写法(这是使用MVC的例子) 1>js写法 <script src="~/Scripts/jquery-2.1.4.min.js"> ...

  8. Ajax 滚动异步加载数据

    第一种情况:单个div滚动 HTML <body> <!-- search start --> <div class="search" #if($m_ ...

  9. 可视化 | Echarts基础异步加载数据交互组件数据集

    目录 1. ECharts 简介 2. ECharts 安装 3. ECharts 配置语法 4. ECharts 图饼 5. ECharts 样式设置 6. ECharts 异步加载数据 7. EC ...

最新文章

  1. Emacs 使用graphviz-dot-mode创建架构图
  2. 信息表示和处理 from computer system chapter 2
  3. python 生成001开始的序号_你知道嘛:Python内建序列通用操作有6种实现方法(赶快收藏)...
  4. Couchbase 介绍 - 更好的 Cache 系统
  5. (0.2)linux下Mysql的安装配置与管理入门(目录篇)
  6. 【Head First 设计模式】-装饰者模式读后总结
  7. ubuntu14安卓phalcon
  8. 11.05 选择前n个记录
  9. 使用koa托管静态资源文件
  10. linux弹窗指令_Linux弹出U盘的正确姿势(命令行)
  11. 三角函数到傅立叶级数
  12. G2O和Sliding Window中的Marginalization
  13. 人工智能系列电子书分享
  14. 使用yagmail模块群发工资条
  15. 初识HTML,最基础走起~
  16. linux开启redis端口的防火墙
  17. “爆打”团队阿尔法发布 以及 第四周任务
  18. 东京电力公司TEPCO投资区块链初创企业,目标系统去中心化
  19. 个人云盘、企业云盘傻傻分不清楚?3分钟带你清晰两者差异!
  20. 三子棋实现(多子棋实现)

热门文章

  1. webview如何自动登录保存登录信息详情
  2. shell 并发脚本
  3. eclipse中help下默认没有Software Updates选项解决办法
  4. 应用虚拟化之规划篇二 项目流程规划
  5. 3389远程连接问题的一个解决办法
  6. ssl证书的生成与签名
  7. 蓝桥杯 ALGO-73 算法训练 统计字符次数
  8. iOS模拟器中修改textField键盘类型为中文输入和键盘弹出方法
  9. 【操作系统】滨江学院 陈遥 期末试卷考点整理
  10. Java 用HTTP的方式发送JSON报文请求