В jqGrid я должен вручную вызвать saveRow, чтобы вызвать запрос на сохранение ajax? - PullRequest
2 голосов
/ 20 марта 2012

Документация здесь не очень понятна:

http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing&s[]=editurl#saverow

Нужно ли вручную делать вызов saveRow после того, как пользователь закончит редактирование ячейки / строки таблицы, или jqGrid автоматически вызовет saveRow, когда строка (ячейка?) Теряет фокус?

Я даю jqGrid значение editurl в начальной настройке, но я не вижу никаких запросов ajax, когда я заканчиваю редактирование строки.

Ответы [ 2 ]

6 голосов
/ 20 марта 2012

У вас есть два варианта:

  1. Вы используете editRow с параметром keys: true. В случае, если метод saveRow будет вызван, если пользователь нажмет Enter , а метод restoreRow будет вызван, если пользователь нажмет Esc, В случае, если вам не нужно явно вызывать saveRow . Внутри onSelectRow обычно вызывается restoreRow , см. Здесь пример.
  2. Вы можете вызвать saveRow вместо restoreRow в обратном вызове onSelectRow . Дополнительно (или в качестве альтернативы) вы можете предоставить пользователю интерфейс для сохранения текущей строки редактирования. Это может быть какая-то кнопка «Сохранить».
0 голосов
/ 23 июня 2019

Хотя это старый вопрос, я хотел бы добавить пример явного вызова editRow, а затем saveRow, что является довольно частым случаем.

Следующий код позволяет пользователю простосвободно перемещаться между выбранными строками и сохранять предыдущую выбранную отредактированную строку:

var grid = $('#gridName').jqGrid({
   // ... some grid properties ...
   editurl: 'clientArray',
   cellEdit: false, // that's the default, but just to make clear that wer'e in inline edit mode
   onSelectRow: utils.onSelectRow
   // ... some more grid properties ...
});
var utils = {
   prevRowId: null, // we have to keep the previous row id
   onSelectRow: function (rowId, selectionStatus, event) {
      if (rowId && rowId !== utils.prevRowId) {
         var $grid = $(event.target).closest('table');
         $grid.jqGrid('saveRow', utils.prevRowId);
         $grid.jqGrid('editRow', rowId, { keys: true });
         utils.prevRowId = rowId;
      }
   },
};

Я не смог найти ни одного из официальных примеров Олега, делающих именно это (они все используют кнопки, , как этоодин или вызов retrieveRow вместо saveRow, как этот ).

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