var scrollPosition = 0
function RefreshGridData() {
scrollPosition = jQuery("#griditems").closest(".ui-jqgrid-bdiv").scrollTop()
$("#griditems").trigger("reloadGrid");
}
после загрузки данных в событие loadComplete
jQuery("#griditems").closest(".ui-jqgrid-bdiv").scrollTop(scrollPosition)
РЕДАКТИРОВАТЬ:
var ids = new Array();
jQuery("#jqgrid_id").jqGrid({
...
gridComplete: function(){
var rowIds = $("#jqgrid_id").getDataIDs();
$.each(ids, function (index, data) {
if (data == 1){
$("#jqgrid_id").expandSubGridRow(rowId);
}
});
},
subGridRowExpanded: function(pID, id){
ids[id] = 1;
},
subGridRowColapsed: function(pID, id){
ids[id] = 0;
},
...
});
не уверен, что это сработает, я не проверял, но должно быть что-то вроде этого
РЕДАКТИРОВАТЬ
setGridParam - не подходит, если он будет работать с событиями, но вы можете попробовать это
Я не смог найти, как прикрепить subGridRowExpanded topick, используя библиотеку тегов в структурах, но попробуйте изменить конфигурацию после построения сетки по taglibrary
$("#griditems").setGridParam({subGridRowExpanded: function(pID, id){ ids[id] = 1;}});
$("#griditems").setGridParam({subGridRowColapsed: function(pID, id){ ids[id] = 0;}});
$("#griditems").setGridParam({gridComplete: function(){
var rowIds = $("#jqgrid_id").getDataIDs();
$.each(ids, function (index, data) {
if (data == 1){
$("#jqgrid_id").expandSubGridRow(rowId);
}
});
}});
EDIT
ок, другой подход:
var scrollPosition = 0
var ids = new Array();
function RefreshGridData() {
ids = new Array();
$('tr:has(.sgexpanded)').each(function(){ids.push($(this).attr('id'))});
scrollPosition = jQuery("#griditems").closest(".ui-jqgrid-bdiv").scrollTop()
$("#griditems").trigger("reloadGrid");
}
и когда загрузка сетки завершена:
jQuery.each(ids, function (id,data) {
$("#jqgrid_id").expandSubGridRow(data);
jQuery("#griditems").closest(".ui-jqgrid-bdiv").scrollTop(scrollPosition);
});