clientpagination.html 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Client Side Pagination in TreeGrid - jQuery EasyUI Demo</title>
  6. <link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
  7. <link rel="stylesheet" type="text/css" href="../../themes/icon.css">
  8. <link rel="stylesheet" type="text/css" href="../demo.css">
  9. <script type="text/javascript" src="../../jquery.min.js"></script>
  10. <script type="text/javascript" src="../../jquery.easyui.min.js"></script>
  11. </head>
  12. <body>
  13. <h2>Client Side Pagination in TreeGrid</h2>
  14. <div class="demo-info">
  15. <div class="demo-tip icon-tip"></div>
  16. <div>This sample shows how to implement client side pagination in TreeGrid.</div>
  17. </div>
  18. <div style="margin:10px 0;"></div>
  19. <table id="tg" class="easyui-treegrid" title="Client Side Pagination" style="width:700px;height:250px"
  20. data-options="
  21. iconCls: 'icon-ok',
  22. rownumbers: true,
  23. animate: true,
  24. collapsible: true,
  25. fitColumns: true,
  26. url: 'treegrid_data2.json',
  27. method: 'get',
  28. idField: 'id',
  29. treeField: 'name',
  30. loadFilter: pagerFilter,
  31. pagination: true,
  32. pageSize: 2,
  33. pageList: [2,5,10]
  34. ">
  35. <thead>
  36. <tr>
  37. <th data-options="field:'name',width:180">Task Name</th>
  38. <th data-options="field:'persons',width:60,align:'right'">Persons</th>
  39. <th data-options="field:'begin',width:80">Begin Date</th>
  40. <th data-options="field:'end',width:80">End Date</th>
  41. <th data-options="field:'progress',width:120,formatter:formatProgress">Progress</th>
  42. </tr>
  43. </thead>
  44. </table>
  45. <script type="text/javascript">
  46. function formatProgress(value){
  47. if (value){
  48. var s = '<div style="width:100%;border:1px solid #ccc">' +
  49. '<div style="width:' + value + '%;background:#cc0000;color:#fff">' + value + '%' + '</div>'
  50. '</div>';
  51. return s;
  52. } else {
  53. return '';
  54. }
  55. }
  56. function pagerFilter(data){
  57. if ($.isArray(data)){ // is array
  58. data = {
  59. total: data.length,
  60. rows: data
  61. }
  62. }
  63. var dg = $(this);
  64. var state = dg.data('treegrid');
  65. var opts = dg.treegrid('options');
  66. var pager = dg.treegrid('getPager');
  67. pager.pagination({
  68. onSelectPage:function(pageNum, pageSize){
  69. opts.pageNumber = pageNum;
  70. opts.pageSize = pageSize;
  71. pager.pagination('refresh',{
  72. pageNumber:pageNum,
  73. pageSize:pageSize
  74. });
  75. dg.treegrid('loadData',data);
  76. }
  77. });
  78. if (!data.topRows){
  79. data.topRows = [];
  80. data.childRows = [];
  81. for(var i=0; i<data.rows.length; i++){
  82. var row = data.rows[i];
  83. row._parentId ? data.childRows.push(row) : data.topRows.push(row);
  84. }
  85. data.total = (data.topRows.length);
  86. }
  87. var start = (opts.pageNumber-1)*parseInt(opts.pageSize);
  88. var end = start + parseInt(opts.pageSize);
  89. data.rows = $.extend(true,[],data.topRows.slice(start, end).concat(data.childRows));
  90. return data;
  91. }
  92. </script>
  93. </body>
  94. </html>