2026/1/16 19:11:08
网站建设
项目流程
拉销智能模板建站系统,策划网络营销方案,微信扫码下单小程序怎么做,1m带宽做网站快不jQuery EasyUI 树形网格#xff08;TreeGrid#xff09; - 添加分页
jQuery EasyUI 的 TreeGrid 继承自 DataGrid#xff0c;因此支持 pagination: true 属性来启用分页功能。但由于 TreeGrid 是层级结构#xff0c;分页通常只针对顶级根节点进行#xff08;子节点通过动…jQuery EasyUI 树形网格TreeGrid - 添加分页jQuery EasyUI 的 TreeGrid继承自 DataGrid因此支持pagination: true属性来启用分页功能。但由于 TreeGrid 是层级结构分页通常只针对顶级根节点进行子节点通过动态加载展开。有两种常见实现方式服务器端分页Server Side Pagination推荐用于大数据量。分页只加载当前页的根节点子节点按需动态加载。客户端分页Client Side Pagination一次性加载全部数据在前端模拟分页适合数据量不大。示例1服务器端分页 动态加载子节点推荐启用分页后TreeGrid 会自动发送page、rows和id参数首次加载/翻页id0或无返回当前页根节点。展开节点id父节点ID返回该节点的子节点不分页。HTML 部分!DOCTYPEhtmlhtmlheadmetacharsetUTF-8titleTreeGrid 服务器端分页 动态加载/titlelinkrelstylesheettypetext/csshrefhttps://www.jeasyui.com/easyui/themes/default/easyui.csslinkrelstylesheettypetext/csshrefhttps://www.jeasyui.com/easyui/themes/icon.cssscripttypetext/javascriptsrchttps://code.jquery.com/jquery-1.12.4.min.js/scriptscripttypetext/javascriptsrchttps://www.jeasyui.com/easyui/jquery.easyui.min.js/script/headbodyh2TreeGrid - 服务器端分页仅根节点分页/h2tableidtgclasseasyui-treegridstylewidth:800px;height:500pxdata-optionsurl:treegrid_pagination.php, method:get, idField:id, treeField:name, pagination: true, pageSize: 10, rownumbers: true, lines: truetheadtrthfieldnamewidth300名称/ththfieldsizewidth100alignright大小/ththfielddatewidth150修改日期/th/tr/thead/table/body/html服务器端示例treegrid_pagination.php?php$pageisset($_GET[page])?intval($_GET[page]):1;$rowsisset($_GET[rows])?intval($_GET[rows]):10;$idisset($_GET[id])?intval($_GET[id]):0;// 父节点ID// 模拟数据库实际替换为你的查询$allRoots50;// 假设有50个根节点if($id0){// 返回子节点不分页$childrenarray();for($i1;$i5;$i){$children[]array(id$id*10$i,name子节点 .($id*10$i),sizerand(100,1000).KB,date2025-12-17);}echojson_encode($children);}else{// 返回当前页根节点 total$offset($page-1)*$rows;$dataarray();for($i$offset1;$i$offset$rows$i$allRoots;$i){$data[]array(id$i,name根节点 .$i,size,date2025-12-17,stateclosed// 有子节点时设置closed显示展开图标);}$resultarray(total$allRoots,rows$data);echojson_encode($result);}?关键点根节点需设置state: closed以显示展开图标。返回格式翻页时{total: N, rows: [...]}加载子节点时直接数组[{...}, {...}]。示例2客户端分页一次性加载全部数据适用于数据量不大的场景。通过扩展loadFilter实现仅分页顶级节点已展开的子节点会附加显示。完整代码基于官方 Demotableidtgclasseasyui-treegridstylewidth:700px;height:500pxdata-optionsurl:treegrid_full_data.json, idField:id, treeField:name, pagination: true, pageSize: 10theadtrthfieldnamewidth300名称/ththfieldsizewidth100大小/ththfielddatewidth150日期/th/tr/thead/tablescripttypetext/javascriptfunctionpagerFilter(data){if(typeofdata.lengthnumbertypeofdata.splicefunction){// 判断数据是否是数组data{total:data.length,rows:data}}vardg$(this);varoptsdg.treegrid(options);varpagerdg.treegrid(getPager);pager.pagination({onSelectPage:function(pageNum,pageSize){opts.pageNumberpageNum;opts.pageSizepageSize;pager.pagination(refresh,{pageNumber:pageNum,pageSize:pageSize});dg.treegrid(loadData,data);}});if(!data.originalRows){data.originalRowsdata.rows;}vartopRows[];varchildRows[];$.each(data.originalRows,function(i,row){if(row._parentId){childRows.push(row);}else{topRows.push(row);}});data.totaltopRows.length;varstart(opts.pageNumber-1)*parseInt(opts.pageSize);varendstartparseInt(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服务器端分页 Demohttps://www.jeasyui.com/tutorial/tree/treegrid4_demo.html客户端分页 Demohttps://www.jeasyui.com/demo/main/index.php?pluginTreeGridthemedefaultdirltrpitemServer%20Side%20Pagination (选择 Server Side Pagination 或 Client Side Pagination)注意TreeGrid 的分页不像普通 DataGrid 那样对所有行分页而是主要针对根节点。如果需要更复杂的层级分页可能需自定义扩展。如果需要结合搜索、编辑或其他功能或你的后端语言具体代码请提供更多细节