Я считаю, что ваш вопрос хорош. Та же проблема может возникнуть у других пользователей jqGrid.
Лично я предпочитаю использовать настройку loadui: 'block'
, которая показывает наложение по всей сетке во время загрузки сетки. В случае, если проблема будет не такой важной.
Вы можете получить лучшие результаты, если измените положение элемента "Загрузка ..." внутри 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 всегда.
ОБНОВЛЕНО : Вероятно, лучшая реализация изменения позиции 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'
: