Как сохранить встроенное добавление, если при нажатии кнопки сохранения действия в jqgrid возвращается ошибка - PullRequest
1 голос
/ 05 марта 2012

jgGrid содержит встроенную кнопку добавления на панели инструментов и кнопку сохранения действия в столбце действий. Удаленные данные JSON используется. Если кнопка «Сохранить действие» нажата, чтобы прекратить встроенное добавление и сервер возвращает ошибку, добавленная строка удаляется из сетки, а введенные данные строки теряются. Я добавил restoreAfterError: false для форматирования и встроенную кнопку добавления, как показано в коде ниже, но эти настройки игнорируются, если нажата кнопка сохранения действия.

Как сохранить строку во встроенном режиме добавления, чтобы редактирование могло продолжаться после ошибки, если нажата кнопка сохранения действия?

colModel: [ {
  name:"_actions",
  formatter:"actions",
  formatoptions:{
    editbutton:true,
    keys:true,
    // this is ignored if action column save button is pressed:
    restoreAfterError:false,
    delbutton:true
    }
} , ...
], 
editurl: '/Grid/Edit',
datatype: "json",

встроенная кнопка добавления добавляется с помощью:

$grid.jqGrid('inlineNav', '#grid_toppager', {
    addParams: {
        position: "beforeSelected", 
        rowID: '_empty',
        useDefValues: true,
        addRowParams: {
            keys: true,
            // this is ignored if action column save button is pressed:
            restoreAfterError: false,
        }
    },

    editParams: {
            keys: true,
            // this is ignored if action column save button is pressed:
            restoreAfterError: false,
    },

   add: true,
   edit: false,
   save: true,
   cancel: true
});

1 Ответ

3 голосов
/ 05 марта 2012

Я проверил настройки restoreAfterError: false внутри addParams.addRowParams или editParams, и все работает хорошо.В случае ошибки редактирование (или новая добавленная строка) остаются в режиме редактирования после того, как сообщение об ошибке отображается моим пользовательским errorfunc.Я полагаю, у вас были проблемы только в случае использования formatter: 'actions'.

. Если вы используете formatter: 'actions', у вас нет возможности определить restoreAfterError напрямую (по крайней мере, в текущей версии jqGrid 3.4.1),Поэтому я рекомендую вам изменить значение по умолчанию restoreAfterError на false:

$.extend($.jgrid.inlineEdit, {
    restoreAfterError: false
});

Кроме того, я рекомендую удалить запятую (как здесь restoreAfterError: false,}) из addRowParams или editParams,Конечные запятые игнорируются многими (но не всеми) веб-браузерами, но все равно есть ошибка.

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