Я нахожу ваш вопрос хорошим. Та же проблема может быть и у других пользователей jqGrid.
Лично я предпочитаю использовать настройку loadui: 'block'
, которая показывает наложение по всей сетке во время загрузки сетки. В случае проблема будет не так важна.
Вы можете получить лучшие результаты, если измените положение div "Loading..." внутри loadBeforeSend
:
loadBeforeSend: function () {
var $loadingDiv = $("#load_"+$.jgrid.jqID(this.id)),
$bdiv = $(this).closest('.ui-jqgrid-bdiv');
$loadingDiv.show().css({
top: (Math.min($bdiv.height(), $(window).height()) - $loadingDiv.height())/2 + 'px',
left: (Math.min($bdiv.width(), $(window).width()) - $loadingDiv.width())/2 + 'px'
});
}
По моему мнению, было бы хорошо изменить базовый код jqGrid (именно изменить код beginReq), чтобы всегда иметь описанное выше изменение позиции div "Loading ...".
ОБНОВЛЕНО: Вероятно, лучшей реализацией изменения положения элемента div "Загрузка..." будет
var gridIdAsSelector = $.jgrid.jqID(this.id),
$loadingDiv = $("#load_" + gridIdAsSelector),
$gbox = $("#gbox_" + gridIdAsSelector);
$loadingDiv.show().css({
top: (Math.min($gbox.height(), $(window).height()) - $loadingDiv.outerHeight())/2 + 'px',
left: (Math.min($gbox.width(), $(window).width()) - $loadingDiv.outerWidth())/2 + 'px'
});
Код должен быть помещен в loadBeforeSend
, как и раньше.
ОБНОВЛЕНО 2: демонстрация демонстрирует идея. Я включил код вне loadComplate
только для демонстрации, чтобы показать, как он будет работать. В демо div «Загрузка» остается видимым, и я дополнительно показываю оверлей, отображаемый в случае использования опции loadui: 'block'
:
person
Oleg
schedule
08.01.2012