miniui中,如果行数据进行过合并,那么在数据全选的时候,就会出现问题,研究之后,发现可以用下面的方法解决:
<div id="datagrid" class="mini-datagrid" style="100%;height:100%;" visible="true" onselectionchanged="onSelectionChange" ondeselect="deselect" onselect="select">
function onSelectionChange() { var rows = grid.getSelecteds(); unselectedList = dedupe(unselectedList); for (var unidx = 0; unidx < unselectedList.length ; unidx ++ ){ var sidx = rows.length; while(sidx--){ if(rows[sidx].deliveryid == unselectedList[unidx]){ rows.splice(sidx,1); } } } for(var i = 0 ; i < rows.length ; i ++ ){ //此时的rows为选中数据 } }
//反选 function deselect(sender){ unselectedList.push(sender.record.deliveryid); } //选中 function select(sender){ selectedList = sender.record.deliveryid; unselectedList = dedupe(unselectedList); var idx = unselectedList.length; while(idx--){ if(unselectedList[idx] == selectedList){ unselectedList.splice(idx,1); } } } //去重 function dedupe(array){ return Array.from(new Set(array)); }