jqGrid之取消选择行

jqGrid在单行选择模式下,resetSelection后,是正常的。

但是在多行选择模式下,resetSelection后,仅仅是取消grid的checked状态,内部存储的selarrrow信息,并没有取消。

直接修改源码。

resetSelection : function( rowid ){

return this.each(function(){
var t = this, sr, fid;
if( t.p.frozenColumns === true ) {
fid = t.p.id+"_frozen";
}
if(rowid !== undefined ) {
sr = rowid === t.p.selrow ? t.p.selrow : rowid;
$("#"+$.jgrid.jqID(t.p.id)+" tbody:first tr#"+$.jgrid.jqID(sr)).removeClass("ui-state-highlight").attr("aria-selected","false");
if (fid) { $("#"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid)).removeClass("ui-state-highlight"); }
if(t.p.multiselect) {
$("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(t.p.id))[t.p.useProp ? 'prop': 'attr']("checked",false);
if(fid) { $("#jqg_"+$.jgrid.jqID(t.p.id)+"_"+$.jgrid.jqID(sr), "#"+$.jgrid.jqID(fid))[t.p.useProp ? 'prop': 'attr']("checked",false); }

t.setHeadCheckBox(false);

                                        //取消选择后,重置已选择行id信息
var selectedIds = t.p.selarrrow;
var selarrrow = [];
for (var i = 0; i < selectedIds.length; i++) {
   if (selectedIds[i] != rowid) {
       selarrrow.push(selectedIds[i]);
   }
}
t.p.selarrrow = selarrrow;

}
sr = null;
} else if(!t.p.multiselect) {

                       ......

t.p.savedRow = [];
});
},

猜你喜欢

转载自blog.csdn.net/yunhaicaomei/article/details/42455961