как сделать серый цвет jqgrid в save inline edit в IE, как это делает Firefox - PullRequest
1 голос
/ 07 сентября 2011

Если строка сохраняется во встроенном редактировании в jqGrid, FireFox делает сетку тусклой (серой) во время операции сохранения.

Internet Explorer 9 не меняет внешний вид сетки.

Параметр loadui не используется, поэтому он должен иметь значение по умолчанию (включено). Если сетка обновляется, она не отображается серым цветом в обоих браузерах, как ожидалось. Затенение происходит во время сохранения только в FireFox.

Как отключить сетку при сохранении (если вызывается правка URL) также в Internet Explorer 9?

Обновление

Шаги для воспроизведения:

  1. Открыть http://trirand.com/blog/jqgrid/jqgrid.html
  2. Выбрать

Функциональность (4.0) new

Действия форматера

  1. Нажмите на кнопку редактирования действия

  2. Нажмите кнопку сохранения действия

Наблюдаемые:

В FireFox нажатие кнопки сохранения делает сетку на некоторое время темнее В IE 9 нажатие кнопки сохранения не меняет сетку.

1 Ответ

2 голосов
/ 08 сентября 2011

Я проанализировал проблему.Причина в том, что строка используется для встроенного редактирования:

async : false, //?!?

(комментарий "?!?" Является исходным комментарием в коде jqGrid).Таким образом, в общем случае наложение, которое блокирует сетку, будет показано в начале запроса jQuery.ajax, который сохраняет строку, но из-за async : false графический интерфейс веб-браузера будет заблокирован до завершения ,В дескрипторе события complete наложение будет скрыто, и пользователь ничего не увидит.Все веб-браузеры, кроме Firefox, не показывают оверлей.

Чтобы решить проблему без изменения кода jqGrid, можно использовать опцию ajaxRowOptions в jqGrid.Параметр задокументирован не в общем списке параметров jqGrid , а в конце документации saveRow .Использование

ajaxRowOptions: { async: true }

в качестве опции jqGrid или в качестве новой опции по умолчанию

$.extend($.jgrid.defaults, {
    ajaxRowOptions: { async: true }
});

решит проблему в случае встроенного редактирования.

В случаеИспользование форматера 'Actions' Другая проблема из строки Существуют

if ( $('#'+gid).jqGrid('saveRow',rid,  op.onSuccess,op.url, op.extraparam, saverow, op.onError,restorerow) ) {
    $("tr#"+rid+" div.ui-inline-edit, "+"tr#"+rid+" div.ui-inline-del","#"+gid+ ".ui-jqgrid-btable:first").show();
    $("tr#"+rid+" div.ui-inline-save, "+"tr#"+rid+" div.ui-inline-cancel","#"+gid+ ".ui-jqgrid-btable:first").hide();
}

Можно видеть, что здесь jqGrid использует saveRow так же, как и асинхронная функция здесь.Если вы будете использовать ajaxRowOptions: { async: true }, вам нужно будет сделать divs div.ui-inline-edit и div.ui-inline-del видимыми и скрыть div.ui-inline-save и div.ui-inline-cancel внутри вашего onSuccess обработчика событий.

UPDATED : Извините, другой код - функции saverow , используемые в качестве параметра метода saveRow, выполняют ту же работу.Поэтому я думаю, что все div будут отображаться / скрываться правильно без дополнительного кода в вашем onSuccess обработчике событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...