如何在jqGrid上突出显示客户端排序后最后选定的行?
我有一个基于jqGrid的应用程序,我在grid选项中使用如何在jqGrid上突出显示客户端排序后最后选定的行?,jqgrid,Jqgrid,我有一个基于jqGrid的应用程序,我在grid选项中使用loadonce:true,在colModel中使用sortable:true,sorttype:'text,允许在数据网格上进行客户端排序。但是,我发现,一旦数据网格被重新排序,最后选择的行将不再突出显示。我的问题是,如何使选定的行在数据调用过程中保持高亮显示?我为您准备了保留行选择的选项。在演示中,我重写了在重新加载网格的情况下使用的代码,该代码具有额外的参数:$(“#list”).trigger(“重新加载网格”,“当前:true}
loadonce:true
,在colModel
中使用sortable:true,sorttype:'text
,允许在数据网格上进行客户端排序。但是,我发现,一旦数据网格被重新排序,最后选择的行将不再突出显示。我的问题是,如何使选定的行在数据调用过程中保持高亮显示?我为您准备了保留行选择的选项。在演示中,我重写了在重新加载网格的情况下使用的代码,该代码具有额外的参数:$(“#list”).trigger(“重新加载网格”,“当前:true}”)代码>。有关详细信息,请参阅
演示将当前选择保存在onSortCol
事件处理程序中,并将其还原到loadComplete
中:
onSortCol: function () {
saveSelection.call(this);
},
loadComplete: function () {
restoreSelection.call(this);
}
您如何看待这个用法非常简单,您可以将它集成到代码中。saveSelection
和restoreseselection
的实现如下:
var lastSelArrRow = [],
lastScrollLeft = 0,
lastSelRow = null,
saveSelection = function () {
var $grid = $(this);
lastSelRow = $grid.jqGrid('getGridParam', 'selrow');
lastSelArrRow = $grid.jqGrid('getGridParam', 'selrow');
lastSelArrRow = lastSelArrRow ? $.makeArray(lastSelArrRow) : null;
lastScrollLeft = this.grid.bDiv.scrollLeft;
},
restoreSelection = function () {
var p = this.p,
$grid = $(this);
p.selrow = null;
p.selarrrow = [];
if (p.multiselect && lastSelArrRow && lastSelArrRow.length > 0) {
for (i = 0; i < lastSelArrRow.length; i++) {
if (lastSelArrRow[i] !== lastSelRow) {
$grid.jqGrid("setSelection", lastSelArrRow[i], false);
}
}
lastSelArrRow = [];
}
if (lastSelRow) {
$grid.jqGrid("setSelection", lastSelRow, false);
lastSelRow = null;
}
this.grid.bDiv.scrollLeft = lastScrollLeft;
};
var lastSelArrRow=[],
lastScrollLeft=0,
lastSelRow=null,
saveSelection=函数(){
var$grid=$(这是);
lastSelRow=$grid.jqGrid('getGridParam','selrow');
lastSelArrRow=$grid.jqGrid('getGridParam','selrow');
LastSelarrow=LastSelarrow?$.makeArray(LastSelarrow):空;
lastScrollLeft=this.grid.bDiv.scrollLeft;
},
restoreSelection=函数(){
var p=这个.p,
$grid=$(此项);
p、 selrow=null;
p、 selarrrow=[];
if(p.multiselect&&lastSelArrRow&&lastSelArrRow.length>0){
对于(i=0;i
亲爱的Oleg,感谢您的详细回答!太棒了!根据您的评论,我发现根本原因是网格将被重新加载,即使排序是在客户端执行的,因此选择应该以编程方式恢复。