关于EasyUI多选,easyui datagrid 分页并保持checkbox选中状态

最近在使用EasyUI制作一个多选的功能,查找了很多资料,有几个说的不是很全,所以就尝试去写,今天终于弄出来了,就把完整的代码 贴出来,部门也是参照前人所说:

第一步:JSP页面

①在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了,

说明(引用他人的):

建立一个全局的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的赋值!

	/*************************勾选*************************************************/

	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);
	        }
	    }
	

这样就能够实现翻页依然都是勾选状态--很不错

转载于:https://my.oschina.net/u/3053442/blog/811315

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值