最近在使用EasyUI制做一个多选的功能,查找了不少资料,有几个说的不是很全,因此就尝试去写,今天终于弄出来了,就把完整的代码 贴出来,部门也是参照前人所说:javascript
第一步:JSP页面java
①在data-options须要设置的属性或方法:idField: 'EMPLOYEE_UUID', view: fileview,
onCheckAll:addcheckItem,onCheck:addcheckItem,onUncheckAll:removeAllItem,onUncheck: removeSingleItem,数组
设置datagrid属性的idField主键--惟一主键---checkbox的field 随意设置,只要不是后台传来的字段函数
<table id="ttemp" data-options="iconCls:'myicon-table',fitColumns:true,rownumbers:true,toolbar:'#tbemp', pageSize:10,pagination:'true',pageList:[10,20,50,100], url:'agentsmanage_findEmployeePerson.do',idField: 'EMPLOYEE_UUID', view: fileview, onCheckAll: addcheckItem,onCheck:addcheckItem,onUncheckAll: removeAllItem,onUncheck: removeSingleItem,remoteSort:true"> <thead> <tr> <th data-options="field:'k',checkbox:true,width:20"></th> <th data-options="field:'EMPLOYEE_UUID',hidden:'true'">人员UUID</th> <th data-options="field:'EMPLOYEE_NAME',width:100,halign:'center',align:'center',formatter:_setContent,sortable:true">姓名</th> <th data-options="field:'UNIT_NAME',width:140,halign:'center',align:'center',formatter:_setContent,sortable:true">aaa</th> <th data-options="field:'DEPT_NAME',width:140,halign:'center',align:'center',formatter:_setContent,sortable:true">bbbb</th> </tr> </thead> </table>
接下来就是JS了,ui
说明(引用他人的):url
创建一个全局的JavaScript数组var checkedItems = [],用来存放选中checkbox的值。.net
三、核心方法,addcheckItem()、removeAllItem(rows)、removeSingleItem(rowIndex, rowData)当选中或者取消checkbox时触发code
用来将checkbox的主键值保存在checkedItems数组,或者从数组中删除对应的id值,findCheckedItem(ID)这个函数用来查找数组中orm
是否存在checkbox的值,存在则返回id值,不存在则返回-1.事件
四、何时调用这些方法呢?分别在datagrid的 onCheckAll: addcheckItem,onCheck: addcheckItem,onUncheckAll: removeAllItem,onUncheck: removeSingleItem 这四个事件中
调用对应的方法。
五、翻页后如何给checkbox赋值呢?关键就在这里,datagrid重写了$.fn.datagrid.defaults.view的onAfterRender事件,
所以在datagrid的view事件里绑定这个函数就OK了。onAfterRender事件是当easyui的元素渲染完毕后执行的事件,在这里会调用手写的ischeckItem函数来实现对checkbox的赋值!
/*************************勾选*************************************************/ var fileview = $.extend({}, $.fn.datagrid.defaults.view, { onAfterRender: function (target) { ischeckItem(); } }); var checkedItems = []; function ischeckItem() { for (var i = 0; i < checkedItems.length; i++) { $('#ttemp').datagrid('selectRecord', checkedItems[i]); //根据id选中行 } } function findCheckedItem(ID) { for (var i = 0; i < checkedItems.length; i++) { if (checkedItems[i] == ID) return i; } return -1; } function addcheckItem() { var row = $('#ttemp').datagrid('getChecked'); for (var i = 0; i < row.length; i++) { if (findCheckedItem(row[i].id) == -1) { checkedItems.push(row[i].id); } } } function removeAllItem(rows) { for (var i = 0; i < rows.length; i++) { var k = findCheckedItem(rows[i].id); if (k != -1) { checkedItems.splice(i, 1); } } } function removeSingleItem(rowIndex, rowData) { var k = findCheckedItem(rowData.id); if (k != -1) { checkedItems.splice(k, 1); } }
这样就可以实现翻页依然都是勾选状态--很不错