问题描述:easyui datagrid checkbox进行多选的时候,获取的数据与选择的数据不一致,有的时候一条数据,有的时候多条数据。
根源:easyui datagrid 设置了 idField 列造成的。
解决:使用好 idField 列,或者去掉这个配置。
如下:
$('#dg_taskgrid') .datagrid( { remoteSort : true, /*toolbar : [ { text : '批量修复', iconCls : 'icon-batch-repair', handler : function() { batchRepairAction(); } } ],*/ toolbar : '#tb_ops', singleSelect: false, checkOnSelect : false, selectOnCheck : false, title : '任务列表', fitColumns : true, // 设置列宽度自适应屏幕 iconCls : 'icon-task-list', striped : true, url : basePath + 'web/op/queryTaskLog', method : 'get', width: $(window).width()*0.9, pageNumber : 1, pageSize : baseNum, // 设置默认分页大小 pageList : pageList, // 设置分页大小 idField : 'versionId', columns : [ [ { checkbox : true }, { field : 'taskId', title : '任务ID', width : 40, align : 'center', sortable : true }, { field : 'taskName', title : '任务名称', width : 80, align : 'center', sortable : false, formatter : function(val, row, rowIndex) { var taskName = val; var taskId = row.taskId; var length = 40; var showTaskName = suitableLengthText( taskName, length); var arr = []; arr .push('<a href="javascript:void(0);" title="'); arr.push(taskName); arr.push('" class="' + SHOW_FIRST_TOOLTIP_CLASS + '" onclick="openTaskDeatil('); arr.push(taskId); arr.push(',2)">'); arr.push(showTaskName); arr.push('</a>'); return arr.join(''); } }, { field : 'versionNo', title : '数据版本', width : 30, align : 'center', sortable : true }, { field : 'state', title : '版本状态', width : 30, align : 'center', sortable : true, formatter : versionStateFormat }, { field : 'startTime', title : '运行开始时间', width : 40, align : 'center', sortable : true, formatter : function(val, row, rowIndex) { if (null == val) { return '-'; } else { return val; } } }, { field : 'endTime', title : '运行结束时间', width : 40, align : 'center', sortable : true, formatter : function(val, row, rowIndex) { if (null == val) { return '-'; } else { return val; } } }, { field : 'elapsedLabel', title : '运行耗时', width : 20, align : 'center', sortable : false }, { field : 'message', title : '信息', width : 80, align : 'left', sortable : false, formatter : function(val, row, rowIndex) { var length = 30; var showVal = suitableLengthText(val, length); var arr = []; arr.push('<span class="' + SHOW_FIRST_TOOLTIP_CLASS + '" title="'); arr.push(val); arr.push('">'); arr.push(showVal); arr.push('</span>'); return arr.join(''); } },{ field : 'teamName', title : '团队名称', width : 30, align : 'center' }, { field : 'op', title : '操作', //width : 40, align : 'center', formatter : formatOp, sortable : false } ] ], pagination : true, queryParams : { filters : params }, onLoadSuccess : function(data) { addToolTips(SHOW_FIRST_TOOLTIP_CLASS); } }); };
附加 checkbox的多选函数:
function batchKillTaskAction(){ // FIXME 20150709 var checkedItems = $('#dg_taskgrid').datagrid('getChecked'); var arr = []; $.each(checkedItems, function(index, item){ var str = item.taskId + ':' + item.versionNo; arr.push(str); }); console.log('arr:'+arr.length+' --> '+arr.join(',')) }