博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jquery zTree结合Asp.net实现异步加载数据
阅读量:4557 次
发布时间:2019-06-08

本文共 4684 字,大约阅读时间需要 15 分钟。

项目上线了,在测试的时候突然发现一次性加载庞大的树结构,导致页面卡死,需要反映数十秒才能加载完成,考虑不周,决定修改程序,在网上发现了这篇文章,感谢作者的分享!

zTree结合Asp.net实现异步加载数据 实现简单操作

zTree 下载 api 访问 :

例子中用到json数据转化 newtonsoft 地址 :

不多说,代码如下 :

aspx 页面 :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="CFBuilder.WebForm2" %>        

     WebData.aspx页面代码 异步提交 交互页面 :

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Newtonsoft.Json;using System.Data.SqlClient;using System.Data;namespace CFBuilder{    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         }        ///         /// 异步加载当前节点的子节点        ///         public void AnsyData()           {            List lsNode = new List();           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;            }        }        ///         /// 判断当前节点是否还有子节点        ///         /// 父节点Id        /// 
    bool类型
    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; } } /// /// 初始化第一次节点加载 /// public void FirstAnsyData() { try { TableEnjson tbEnjson = new TableEnjson(); List lsNode = new List(); 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; } } /// /// 把数据形式转换成zTree的json数据格式 /// /// ///
    public List getList(DataTable table) { try { List lsNode = new List(); 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/no27/p/4358927.html

    你可能感兴趣的文章
    SVN学习--VisualSVN Server和TortoiseSVN的配置和使用
    查看>>
    CSS-继承和层叠
    查看>>
    「雕爷学编程」Arduino动手做(13)——触摸开关模块
    查看>>
    【u119】中位数
    查看>>
    【42.86%】【codeforces 742D】Arpa's weak amphitheater and Mehrdad's valuable Hoses
    查看>>
    Python Pandas分组聚合
    查看>>
    Thymeleaf 学习笔记
    查看>>
    MAC IP等相关
    查看>>
    Unable to instantiate prefab. Prefab may be broken.(Unity2018.2.2报错)
    查看>>
    Java中的TreeMap、Comparable、Comparator
    查看>>
    无刷新页面分页
    查看>>
    Mybatis(二)|搭建mybatis环境之注解版-简单搭配
    查看>>
    4.npm模块安装和使用(axios异步请求,lodash工具库)
    查看>>
    java的类加载机制816
    查看>>
    毕业生的未来
    查看>>
    sqlserver行转列
    查看>>
    PHP统计数组中所有的值出现的次数
    查看>>
    用canvas绘制花朵
    查看>>
    Java 7如期释出 重大功能延至第8版
    查看>>
    (-2147483648 > 0)?
    查看>>