在jqGrid中我是否必须手动调用saveRow来触发ajax保存请求?

时间:2012-03-19 21:02:32

标签: jqgrid

此处的文档不是很清楚:

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

在用户完成编辑表格单元格/行后,是否必须手动进行saveRow调用,否则当行(单元格?)失去焦点时,jqGrid会自动触发saveRow吗?

我在初始设置中给jqGrid一个editurl值,但是当我完成一行编辑时,我没有看到任何ajax请求。

2 个答案:

答案 0 :(得分:6)

您有两种选择:

  1. 您使用editRow参数keys: true。如果用户按 Enter ,将调用方法saveRow,如果用户按 Esc ,将调用方法restoreRow。如果您不需要明确调用saveRowonSelectRow内部通常会restoreRow调用一个示例。
  2. 您可以在saveRow回调中拨打restoreRow而不是onSelectRow。另外(或者),您可以为用户提供保存当前编辑行的界面。它可以是某种“保存”按钮。

答案 1 :(得分:0)

尽管这是一个老问题,但我想添加一个示例,先显式调用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;
      }
   },
};

我找不到Oleg的官方示例之一就是这样做的(它们全部使用按钮as this one或调用retrieveRow而不是saveRowas this one )。