jqGrid 编辑单元格和 afterSubmitCell

jqGrid Edit Cell and afterSubmitCell

我使用 jqGrid 4.9.3-pre - Oleg 提供的免费 jqGrid。我想添加一条新记录并在没有模态的情况下进行编辑 window。

我这样做:

  1. 在 loadComplete 上我添加了一个新的空记录,id=0.Here 我们可以添加一个 新记录。
  2. 从数据库中添加新条目后获取其 ID。替换 ID 上的 0 值。
  3. 添加新记录后会创建另一个空行,依此类推。

jsFiddle

我认为问题是小区仍然处于活动状态?

我找到了解决方案。谢谢奥列格!

var flag = false;
....
    afterSaveCell: function(rowid, cellname, value, iRow, iCol) {
           $('#' + lastRowId).attr("id", respText);
        },
        afterSubmitCell: function(serverresponse, rowid, cellname, value, iRow, iCol){
                      var rows = $("#contract_subgrid")[0].rows;
                      lastRowId = rows[rows.length-1].id;
             var response = (serverresponse.statusText).trim();
                  if (response == 'OK'){
                      respText = serverresponse.responseText;
                    if(respText=='0' || respText==""){
                        return [true,""];
                    }
                    else {
                     $(this).jqGrid('setCell', lastRowId, 'id', respText);
                   $(this).jqGrid('addRowData', undefined, {});
                    return [true,""];
                    }
                  }else{
                    return [false,respText];
                  }
          },
        loadComplete: function () {
          if(flag === false) { 
            $(this).jqGrid('addRowData', undefined, {});
          flag = true;
          }
        },

抱歉,我不明白你想要实现的场景。在我看来,使用单元格编辑 (cellEdit: true) 并不是最好的选择。如果您使用默认的 cellsubmit:'clientArray',无论如何都不会调用 afterSubmitCelladdRowDataid="0"的用法不好。您可以生成 id 重复项。您可以使用

$(this).jqGrid('addRowData', undefined, {});

代替。使用 undefined 作为 rowid 将生成新的 unique rowid。更好的方法是使用

$(this).jqGrid('addRow', {position: "last"});

inlineNav。您还需要将 defaultValue: "Intim" 修复为 defaultValue: "IN"

你可以在inlineEditing里面定义aftersavefunc来更新保存到服务器后的rowid。您需要为其指定 editurl。查看 jsfiddle.net/OlegKi/tzp91wnf/2 需要添加 editurlaftersavefunc 的原因。您需要同时使用 .attr("id", newId).jqGrid('setCell', rowid, 'id', newId) 来更新后端生成的 ID。