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

posted @ 2018-07-20 22:01  八方鱼  阅读(1216)  评论(0)    收藏  举报