2015-11-06 3 views
2

Как поддерживать состояние прокрутки каждый раз, когда обновляется jqgrid? Я попытался следующие:Поддержание состояния прокрутки в jqgrid

var scrollPosition = $("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(); 
$("#"+grid_id).trigger("reloadGrid", [{current:true}]); 
$("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(scrollPosition); 

Но это не работает, и полоса прокрутки перемещается обратно в верхней части после сетки обновляется.

Также, $("#"+grid_id).closest('.ui-jqgrid-bdiv').scrollTop(); выходы 0 каждый раз, хотя сетка имеет полосу прокрутки. Неверно указан аргумент селектора ($("#"+grid_id))? Что должно быть там?

ответ

2

Я полагаю, что вы пытаетесь установить scrollTopдо данные загружаются в сетку. Я бы порекомендовал вам сохранить scrollTop в пользовательскую опцию сетки и сбросить позицию внутри обратного вызова loadComplete или jqGridAfterLoadComplete.

Чтобы сохранить прокрутки верхнюю позицию, можно использовать

var $grid = $("#"+grid_id), 
    p = $grid.jqGrid("getGridParam"); 
p.scrollTopPosition = $grid.closest(".ui-jqgrid-bdiv").scrollTop(); 

Чтобы восстановить положение, вы можете использовать

$("#"+grid_id).bind("jqGridAfterLoadComplete", function() { 
    var $self = $(this), p = $self.jqGrid("getGridParam"); 

    if (p.scrollTopPosition !== undefined) { 
     $self.closest(".ui-jqgrid-bdiv").scrollTop(p.scrollTopPosition); 
     p.scrollTopPosition = undefined; 
    } 
}); 
+0

Я не знаю, почему, но функция 'jqGridAfterLoadComplete' не называемый. Однако сетка освежает. –

+1

Пожалуйста, включите в ** каждый ваш вопрос **: какую версию jqGrid вы используете и какую вилку jqGrid вы используете (бесплатный jqGrid, Guriddo jqGrid JS или какой-то старый jqGrid в версии <= 4.7). В любом случае вы можете использовать 'loadComplete' вместо' jqGridAfterLoadComplete' в случае использования старой версии jqGrid. – Oleg

+0

@SuhailGupta: Проблема решена или есть некоторые проблемы? Если существует какая-либо проблема, предоставьте демоверсию, которая может быть использована для воспроизведения проблем. – Oleg

Смежные вопросы