1. 程式人生 > >EasyUI datagrid實現翻頁保持選中狀態

EasyUI datagrid實現翻頁保持選中狀態

轉載自:http://blog.csdn.net/junlong750/article/details/51470834

1、首先設定datagrid屬性的idField主鍵,這裡假如為id,若idField為其他的,記住下面的程式碼裡的 id也要做相應的修改

2、建立一個全域性的JavaScript陣列var checkedItems = [],用來存放選中checkbox的值。

3、核心方法,addcheckItem()、removeAllItem(rows)、removeSingleItem(rowIndex, rowData)當選中或者取消checkbox時觸發

    用來將checkbox的主鍵值儲存在checkedItems陣列,或者從陣列中刪除對應的id值,findCheckedItem

(ID)這個函式用來查詢陣列中

  是否存在checkbox的值,存在則返回id值,不存在則返回-1.

4、什麼時候呼叫這些方法呢?分別在datagrid的 onCheckAll: addcheckItem,onCheck: addcheckItem,onUncheckAll: removeAllItem,onUncheck: removeSingleItem 這四個事件中

  呼叫對應的方法。

5、翻頁後如何給checkbox賦值呢?關鍵就在這裡,datagrid重寫了$.fn.datagrid.defaults.view的onAfterRender事件,

  因此在datagrid的view事件裡繫結這個函式就OK了。onAfterRender事件是當easyui的元素渲染完畢後執行的事件,在這裡會呼叫手寫的ischeckItem函式來實現對checkbox的賦值!

6、程式碼展示

[html] view plain copy  print?在CODE上檢視程式碼片派生到我的程式碼片
  1. <%@ page language="java"pageEncoding="UTF-8"contentType="text/html; charset=UTF-8"%>
  2. <%@ include file="/pageHead.jsp" %>
  3. <%@page import="com.iss.itreasury.common.utils.SysConstant"%>
  4. <scripttype="text/javascript">
  5.     document.onkeydown
     = function(e) {  
  6.     var e = e || event;  
  7.     if(e.keyCode == 13) {  
  8.     setTimeout(function(){  
  9.                $('#success').val("");  
  10.             },0);  
  11.             e.preventDefault ? e.preventDefault() : (e.returnValue = false);  
  12.         }  
  13.     }     
  14.     $(function(){     
  15.         $("#hid").hide();   
  16.         $("#allpeople").change(function () {    
  17.             var aaa = $("#allpeople  option:selected").text();    
  18.             if(aaa == "所有人"){  
  19.                 //$('#dg2').datagrid('clearSelections');  
  20.                 $('#dg2').datagrid('reload');  
  21.                 $("#hid").hide();   
  22.             }else{  
  23.                 //$('#dg2').datagrid('clearSelections');  
  24.                 $('#dg2').datagrid('reload');  
  25.                 $("#hid").show();   
  26.             }  
  27.         });  
  28.         var fileview = $.extend({}, $.fn.datagrid.defaults.view, { onAfterRender: function (target) { ischeckItem(); } });  
  29.         var checkedItems = [];  
  30.         function ischeckItem() {  
  31.             for (var i = 0; i <checkedItems.length; i++) {  
  32.                 $('#dg2').datagrid('selectRecord', checkedItems[i]); //根據id選中行   
  33.             }  
  34.         }  
  35.         function findCheckedItem(ID) {  
  36.             for (var i = 0; i <checkedItems.length; i++) {  
  37.                 if (checkedItems[i] == ID) return i;  
  38.             }  
  39.             return -1;  
  40.         }  
  41.          function addcheckItem() {  
  42.             var row = $('#dg2').datagrid('getChecked');  
  43.             for (var i = 0; i <row.length; i++) {  
  44.                 if (findCheckedItem(row[i].id) == -1) {  
  45.                     checkedItems.push(row[i].id);  
  46.                 }  
  47.             }  
  48.          }  
  49.          function removeAllItem(rows) {  
  50.             for (var i = 0; i <rows.length; i++) {  
  51.                 var k = findCheckedItem(rows[i].id);  
  52.                 if (k != -1) {  
  53.                     checkedItems.splice(i, 1);  
  54.                 }  
  55.             }  
  56.          }  
  57.          function removeSingleItem(rowIndex, rowData) {  
  58.             var k = findCheckedItem(rowData.id);  
  59.             if (k != -1) {  
  60.                 checkedItems.splice(k, 1);  
  61.             }  
  62.          }  
  63.         $('#dg2').datagrid({  
  64.             idField: 'id',   
  65.             view: fileview,  
  66.             method: 'post',  
  67.             //title: '使用者列表',  
  68.             width: '1000',  
  69.             height: '325',  
  70.             fitColumns: true,  
  71.             singleSelect: true,  
  72.             pagination: true,  
  73.             url:'${systemctx}/userManager/userQuery.json',  
  74.             pageSize: 15,  
  75.             pageList: [ 20, 50, 100],  
  76.             queryParams: formToJson("pageform"),  
  77.             rownumbers:true,  
  78.             singleSelect:false,  
  79.             columns:[[  
  80.                 {field:'id',title:' ',checkbox:true,align:'center'},  
  81.                 {field:'username',title:'使用者名稱',width:'15%'},  
  82.                 {field:'realname',title:'真實姓名',width:'15%'},  
  83.                 {field:'roleName',title:'角色',width:'15%'},  
  84.                 {field:'mobilePhone',title:'行動電話',width:'15%',align:'center'},  
  85.                 {field:'email',title:'電子郵件',width:'20%'},  
  86.                 {field:'sexName',title:'性別',width:'5%',align:'center'}  
  87.             ]],  
  88.             toolbar:[],  
  89.             onCheckAll:function(rows){  
  90.                 addcheckItem();  
  91.             },  
  92.             onCheck:function(rowIndex,rowData){  
  93.                 addcheckItem();  
  94.             },  
  95.             onUncheckAll:function(rows){  
  96.                 removeAllItem(rows);  
  97.             },  
  98.             onUncheck:function(rowIndex,rowData){  
  99.                 removeSingleItem(rowIndex,rowData);  
  100.             }  
  101.         });  
  102.         //將查詢項放入工具欄中  
  103.         //$('#tb').insertBefore("table:first",'.datagrid-toolbar');  
  104.     });  
  105.     function saveInstant(){  
  106.     }  
  107. </script>
  108.     <formid="pageform"class="easyui-form"method="POST"data-options="novalidate:true">
  109.         <divclass="pageBody">
  110.             <tableclass="tableFrom">
  111.                 <tr>
  112.                     <th>推送標題:</th>
  113.                     <td><inputid="title"class="iss_text"name="title"data-options="required:true"/></td>
  114.                 </tr>
  115.                 <tr>
  116.                     <th>推送內容:</th>
  117.                     <td><textarearows="8"cols="60"id="content"name="content"maxlength="150"></textarea></td>
  118.                 </tr>
  119.                 <tr>
  120.                     <th>廣播(所有人):</th>
  121.                     <td>
  122.                         <selectpanelheight="auto"name="allpeople"id="allpeople"