37zTree - 分页加载大数据量

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 37zTree - 分页加载大数据量

效果图:

代码:

<!DOCTYPE html>
<HTML>
<HEAD>
  <TITLE> ZTREE DEMO - big data page</TITLE>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <link rel="stylesheet" href="../../../css/demo.css" type="text/css">
  <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
  <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.excheck.js"></script>
  <script type="text/javascript" src="../../../js/jquery.ztree.exedit.js"></script>
  <SCRIPT type="text/javascript">
    <!--
    var setting = {
      async: {
        enable: true,
        url: getUrl
      },
      check: {
        enable: true
      },
      data: {
        simpleData: {
          enable: true
        }
      },
      view: {
        addDiyDom: addDiyDom
      },
      callback: {
        beforeExpand: beforeExpand,
        onAsyncSuccess: onAsyncSuccess,
        onAsyncError: onAsyncError
      }
    };
    var zNodes =[
      {name:"分页测试", t:"请点击分页按钮", id:"1", count:2000, page:0, pageSize:100, isParent:true}
    ];
    var curPage = 0;
    function getUrl(treeId, treeNode) {
      var param = "id="+ treeNode.id +"_"+treeNode.page +"&count="+treeNode.pageSize,
      aObj = $("#" + treeNode.tId + "_a");
      aObj.attr("title", "当前第 " + treeNode.page + " 页 / 共 " + treeNode.maxPage + " 页")
      return "../asyncData/getNodesForBigData.php?" + param;
    }
    function goPage(treeNode, page) {
      treeNode.page = page;
      if (treeNode.page<1) treeNode.page = 1;
      if (treeNode.page>treeNode.maxPage) treeNode.page = treeNode.maxPage;
      if (curPage == treeNode.page) return;
      curPage = treeNode.page;
      var zTree = $.fn.zTree.getZTreeObj("treeDemo");
      zTree.reAsyncChildNodes(treeNode, "refresh");
    }
    function beforeExpand(treeId, treeNode) {
      if (treeNode.page == 0) treeNode.page = 1;
      return !treeNode.isAjaxing;
    }
    function onAsyncSuccess(event, treeId, treeNode, msg) {
    }
    function onAsyncError(event, treeId, treeNode, XMLHttpRequest, textStatus, errorThrown) {
      var zTree = $.fn.zTree.getZTreeObj("treeDemo");
      alert("异步获取数据出现异常。");
      treeNode.icon = "";
      zTree.updateNode(treeNode);
    }
    function addDiyDom(treeId, treeNode) {
      if (treeNode.level>0) return;
      var aObj = $("#" + treeNode.tId + "_a");
      if ($("#addBtn_"+treeNode.id).length>0) return;
      var addStr = "<span class='button lastPage' id='lastBtn_" + treeNode.id
        + "' title='last page' onfocus='this.blur();'></span><span class='button nextPage' id='nextBtn_" + treeNode.id
        + "' title='next page' onfocus='this.blur();'></span><span class='button prevPage' id='prevBtn_" + treeNode.id
        + "' title='prev page' onfocus='this.blur();'></span><span class='button firstPage' id='firstBtn_" + treeNode.id
        + "' title='first page' onfocus='this.blur();'></span>";
      aObj.after(addStr);
      var first = $("#firstBtn_"+treeNode.id);
      var prev = $("#prevBtn_"+treeNode.id);
      var next = $("#nextBtn_"+treeNode.id);
      var last = $("#lastBtn_"+treeNode.id);
      treeNode.maxPage = Math.round(treeNode.count/treeNode.pageSize - .5) + (treeNode.count%treeNode.pageSize == 0 ? 0:1);
      first.bind("click", function(){
        if (!treeNode.isAjaxing) {
          goPage(treeNode, 1);
        }
      });
      last.bind("click", function(){
        if (!treeNode.isAjaxing) {
          goPage(treeNode, treeNode.maxPage);
        }
      });
      prev.bind("click", function(){
        if (!treeNode.isAjaxing) {
          goPage(treeNode, treeNode.page-1);
        }
      });
      next.bind("click", function(){
        if (!treeNode.isAjaxing) {
          goPage(treeNode, treeNode.page+1);
        }
      });
    };
    $(document).ready(function(){
      $.fn.zTree.init($("#treeDemo"), setting, zNodes);
    });
    //-->
  </SCRIPT>
  <style type="text/css">
.ztree li span.button.firstPage {float:right; margin-left:2px; margin-right: 0; background-position:-144px -16px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.prevPage {float:right; margin-left:2px; margin-right: 0; background-position:-144px -48px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.nextPage {float:right; margin-left:2px; margin-right: 0; background-position:-144px -64px; vertical-align:top; *vertical-align:middle}
.ztree li span.button.lastPage {float:right; margin-left:2px; margin-right: 0; background-position:-144px -32px; vertical-align:top; *vertical-align:middle}
  </style>
 </HEAD>
<BODY>
<h1>分页加载大数据量</h1>
<h6>[ 文件路径: bigdata/page.html ]</h6>
<div class="content_wrap">
  <div class="zTreeDemoBackground left">
    <ul id="treeDemo" class="ztree"></ul>
  </div>
  <div class="right">
    <ul class="info">
      <li class="title"><h2>1、大数据量加载说明</h2>
        <ul class="list">
        <li>1)、分页方案可以有效解决某一级节点数据超大的情况。</li>
        <li>2)、分页按钮通过自定义控件的方法实现。</li>
        <li class="highlight_red">3)、分页方案对于 checkbox 的关联关系无能为力,只能每次翻页后进行修正。由于时间关系,Demo 中不对 checkbox 的关联进行任何修正处理。</li>
        <li class="highlight_red">4)、分页方案中,从 zTree 得到的节点数据只有当前页的节点数据,可以在每次翻页后自行保存每页的数据,作为缓存,具体情况要根据实际需求来决定。</li>
      </li>
      <li class="title"><h2>2、setting 配置信息说明</h2>
        <ul class="list">
        <li>需要设置 setting.async 异步加载部分的参数</li>
        <li>其他不需要进行特殊的配置,根据自己的需求自行设置</li>
        </ul>
      </li>
      <li class="title"><h2>3、treeNode 节点数据说明</h2>
        <ul class="list">
        <li>对 节点数据 没有特殊要求,用户可以根据自己的需求添加自定义属性</li>
        </ul>
      </li>
    </ul>
  </div>
</div>
</BODY>
</HTML>
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
2月前
|
存储 缓存 数据库
别再用offset和limit分页了,性能太差!——探索高效分页技术
【8月更文挑战第27天】在Web开发领域,分页是处理大量数据展示时不可或缺的功能。然而,传统的基于offset和limit的分页方式,在数据量剧增时,其性能问题日益凸显。本文将深入探讨这一问题的根源,并介绍几种更为高效的分页策略,助力你的应用性能飞跃。
49 0
|
5月前
|
SQL 存储 大数据
Hive的查询、数据加载和交换、聚合、排序、优化
Hive的查询、数据加载和交换、聚合、排序、优化
111 2
|
5月前
|
存储 缓存 算法
分页存储
分页存储
66 0
|
5月前
|
JSON 开发框架 前端开发
利用bootstraptable展示数据,对数据进行排序分页等操作
利用bootstraptable展示数据,对数据进行排序分页等操作
|
12月前
35zTree - 一次性加载大数据量
35zTree - 一次性加载大数据量
32 0
35zTree - 一次性加载大数据量
|
12月前
|
前端开发 JavaScript Java
70jqGrid - 一次性加载多级表格数据
70jqGrid - 一次性加载多级表格数据
38 0
|
存储 SQL 缓存
分页列表缓存,你真的会吗
开源中国的红薯哥写了很多关于缓存的文章,其中多级缓存思路,分页列表缓存这些知识点给了我很大的启发性。 写这篇文章,我们聊聊分页列表缓存,希望能帮助大家提升缓存技术认知。
分页列表缓存,你真的会吗
|
SQL 关系型数据库 MySQL
Mysql排序后分页,因数据重复导致分页数据紊乱的问题
Mysql排序后分页,因数据重复导致分页数据紊乱的问题
154 0
|
存储 JSON NoSQL
MongoDB基本操作(二)——排序、分页、聚合查询、优化索引等
MongoDB基本操作(二)——排序、分页、聚合查询、优化索引等
1431 0
|
存储 算法 程序员
分页和分段有什区别
分页和分段有什区别
291 0