news 2026/6/10 16:18:57

jQuery EasyUI 树形菜单 - 树形网格添加分页

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
jQuery EasyUI 树形菜单 - 树形网格添加分页

jQuery EasyUI 树形网格(TreeGrid) - 添加分页

jQuery EasyUI 的 TreeGrid继承自 DataGrid,因此支持pagination: true属性来启用分页功能。但由于 TreeGrid 是层级结构,分页通常只针对顶级根节点进行(子节点通过动态加载展开)。

有两种常见实现方式:

  1. 服务器端分页(Server Side Pagination):推荐用于大数据量。分页只加载当前页的根节点,子节点按需动态加载。
  2. 客户端分页(Client Side Pagination):一次性加载全部数据,在前端模拟分页(适合数据量不大)。
示例1:服务器端分页 + 动态加载子节点(推荐)

启用分页后,TreeGrid 会自动发送pagerowsid参数:

  • 首次加载/翻页:id=0(或无),返回当前页根节点。
  • 展开节点:id=父节点ID,返回该节点的子节点(不分页)。

HTML 部分

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>TreeGrid 服务器端分页 + 动态加载</title><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/default/easyui.css"><linkrel="stylesheet"type="text/css"href="https://www.jeasyui.com/easyui/themes/icon.css"><scripttype="text/javascript"src="https://code.jquery.com/jquery-1.12.4.min.js"></script><scripttype="text/javascript"src="https://www.jeasyui.com/easyui/jquery.easyui.min.js"></script></head><body><h2>TreeGrid - 服务器端分页(仅根节点分页)</h2><tableid="tg"class="easyui-treegrid"style="width:800px;height:500px"data-options="url:'treegrid_pagination.php', method:'get', idField:'id', treeField:'name', pagination: true, pageSize: 10, rownumbers: true, lines: true"><thead><tr><thfield="name"width="300">名称</th><thfield="size"width="100"align="right">大小</th><thfield="date"width="150">修改日期</th></tr></thead></table></body></html>

服务器端示例(treegrid_pagination.php)

<?php$page=isset($_GET['page'])?intval($_GET['page']):1;$rows=isset($_GET['rows'])?intval($_GET['rows']):10;$id=isset($_GET['id'])?intval($_GET['id']):0;// 父节点ID// 模拟数据库(实际替换为你的查询)$allRoots=50;// 假设有50个根节点if($id>0){// 返回子节点(不分页)$children=array();for($i=1;$i<=5;$i++){$children[]=array('id'=>$id*10+$i,'name'=>'子节点 '.($id*10+$i),'size'=>rand(100,1000).'KB','date'=>'2025-12-17');}echojson_encode($children);}else{// 返回当前页根节点 + total$offset=($page-1)*$rows;$data=array();for($i=$offset+1;$i<=$offset+$rows&&$i<=$allRoots;$i++){$data[]=array('id'=>$i,'name'=>'根节点 '.$i,'size'=>'','date'=>'2025-12-17','state'=>'closed'// 有子节点时设置closed,显示展开图标);}$result=array('total'=>$allRoots,'rows'=>$data);echojson_encode($result);}?>

关键点

  • 根节点需设置"state": "closed"以显示展开图标。
  • 返回格式:翻页时{total: N, rows: [...]};加载子节点时直接数组[{...}, {...}]
示例2:客户端分页(一次性加载全部数据)

适用于数据量不大的场景。通过扩展loadFilter实现仅分页顶级节点,已展开的子节点会附加显示。

完整代码(基于官方 Demo)

<tableid="tg"class="easyui-treegrid"style="width:700px;height:500px"data-options="url:'treegrid_full_data.json', idField:'id', treeField:'name', pagination: true, pageSize: 10"><thead><tr><thfield="name"width="300">名称</th><thfield="size"width="100">大小</th><thfield="date"width="150">日期</th></tr></thead></table><scripttype="text/javascript">functionpagerFilter(data){if(typeofdata.length=='number'&&typeofdata.splice=='function'){// 判断数据是否是数组data={total:data.length,rows:data}}vardg=$(this);varopts=dg.treegrid('options');varpager=dg.treegrid('getPager');pager.pagination({onSelectPage:function(pageNum,pageSize){opts.pageNumber=pageNum;opts.pageSize=pageSize;pager.pagination('refresh',{pageNumber:pageNum,pageSize:pageSize});dg.treegrid('loadData',data);}});if(!data.originalRows){data.originalRows=data.rows;}vartopRows=[];varchildRows=[];$.each(data.originalRows,function(i,row){if(row._parentId){childRows.push(row);}else{topRows.push(row);}});data.total=topRows.length;varstart=(opts.pageNumber-1)*parseInt(opts.pageSize);varend=start+parseInt(opts.pageSize);data.rows=$.extend(true,[],topRows.slice(start,end).concat(childRows));returndata;}$(function(){$('#tg').treegrid({loadFilter:pagerFilter}).treegrid('clientPaging');});</script>
官方参考
  • 服务器端分页教程:https://www.jeasyui.com/tutorial/tree/treegrid4.php
  • 服务器端分页 Demo:https://www.jeasyui.com/tutorial/tree/treegrid4_demo.html
  • 客户端分页 Demo:https://www.jeasyui.com/demo/main/index.php?plugin=TreeGrid&theme=default&dir=ltr&pitem=Server%20Side%20Pagination (选择 Server Side Pagination 或 Client Side Pagination)

注意:TreeGrid 的分页不像普通 DataGrid 那样对所有行分页,而是主要针对根节点。如果需要更复杂的层级分页,可能需自定义扩展。

如果需要结合搜索、编辑或其他功能,或你的后端语言具体代码,请提供更多细节!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:35:45

AI智能体的核心引擎:知识库构建全流程详解(建议收藏)

本文详细介绍了AI知识库作为智能体"认知大脑"的核心价值&#xff0c;阐述了其三层组成要素&#xff08;事实层、规则层、语义层&#xff09;及与智能体的交互逻辑。通过未来智安的实践案例&#xff0c;展示了AI知识库如何实现快速威胁定位、持续学习沉淀和人机协同优…

作者头像 李华
网站建设 2026/6/10 19:31:17

四端互通与高并发:下一代即时通讯系统的核心技术解析

在当前数字化时代&#xff0c;即时通讯系统已成为人们日常沟通的重要工具。一套优秀的即时通讯解决方案需要实现PC端、Web端、iOS和Android四端无缝互通&#xff0c;同时能够应对海量用户并发访问的挑战。本文将深入探讨实现这一目标的核心技术方案。全平台覆盖的架构设计现代即…

作者头像 李华
网站建设 2026/6/10 19:29:59

两大神器助你一键本地部署大模型,小白也能秒变专家

文章介绍了本地部署大模型的四大必要性&#xff1a;数据隐私安全、摆脱网络依赖、降低长期成本、个性化定制。推荐了两款工具&#xff1a;DS本地部署大师&#xff0c;提供图形化界面和内置模型&#xff0c;一键安装使用&#xff1b;聪明灵犀&#xff0c;支持硬件监控、参数调优…

作者头像 李华
网站建设 2026/6/9 23:20:58

Agentic AI崛起——从LLM到自主智能体的技术革命

本文系统梳理了从LLM到Agentic AI的技术演进历程&#xff0c;从Agent概念溯源出发&#xff0c;分析了单智能体的局限性与多智能体的协作优势&#xff0c;阐述了Agentic AI的核心特征与本质内涵。文章指出&#xff0c;技术组合带来的能力涌现是推动AI从被动对话工具向主动智能伙…

作者头像 李华
网站建设 2026/6/10 14:24:49

2025.12.21论文阅读

2025.12.18 论文阅读一、文献阅读题目信息摘要创新点理论基础量子比特与纠缠量子求解器实验非线性方程积分与副本数验证与经典系综预测的对比结论不足与展望一、文献阅读 题目信息 题目&#xff1a; 《Quantum Computers for Weather and Climate Prediction: The Good, the …

作者头像 李华
网站建设 2026/6/10 10:30:39

说说Redis的内存淘汰策略?

大家好&#xff0c;我是锋哥。今天分享关于【说说Redis的内存淘汰策略&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说说Redis的内存淘汰策略&#xff1f; 超硬核AI学习资料&#xff0c;现在永久免费了&#xff01; Redis 的内存淘汰策略&#xff08;Eviction Policy…

作者头像 李华