jqgrid 多选的问题
项目需求,jqgrid多选操作,翻页的时候要记住之前的操作
在网上找到了网友提供的方法:
gridComplete : function() { removeHorizontalScrollBar("list"); var _this = this; //console.log(item_selected); if(item_selected.length>0){ for (var i = 0; i < item_selected.length; i++) { $(_this).jqGrid('setSelection',item_selected[i]); } } }, beforeSelectRow:function(rowid, e) { var _this = this; var index = _.indexOf(item_selected, rowid); if(index==-1){ item_selected.push(rowid); } else{ item_selected = _.pull(item_selected, rowid); } return true; }, onSelectAll:function(aRowids,status) { var _this = this; if(status){ item_selected = _.union(item_selected, aRowids); }else{ item_selected = _.difference(item_selected, aRowids); } },
(注意,下划线对象的方法采用的是lodash.3.17.js)
这样翻页的时候会记住选中行
但是一开始的时候我没有加红色背景的return true 代码,发现不点击checkbox,而只是点击该行,虽然实际上已经选中了,jqgrid getselectRow 方法也能得到选中行,但是checkbox却没有显示勾选上的状态,而正常情况下jqgrid默认的操作会选中该行,并改变checkbox的勾选状态。
在解决问题的过程中,想到只在鼠标点击checkbox的时候才设置item_selected数组值,使用multiboxonly:true参数,发现不起作用,据说是3.6版本之后不支持了,后来找到网友的一篇文章,解决代码如下:
beforeSelectRow : function(rowid, e) { var $myGrid = $(this), i = $.jgrid.getCellIndex($(e.target) .closest('td')[0]), cm = $myGrid.jqGrid( 'getGridParam', 'colModel'); if (cm[i].name === 'cb') { var index = _.indexOf(item_selected, rowid); if (index == -1) { item_selected.push(rowid); } else { item_selected = _.pull(item_selected, rowid); } } },
但是在点击全选的时候,却依然不能正常设置item_selected的值,后来还是加了return true 才解决
参考地址:
https://blog.csdn.net/deepwishly/article/details/8109753

浙公网安备 33010602011771号