jqGrid Edit Cell和afterSubmitCell

时间:2016-01-26 07:50:28

标签: javascript jqgrid free-jqgrid

我使用了Oleg的jqGrid 4.9.3-pre-free jqGrid。我想添加一条新记录并在没有模态窗口的情况下进行编辑。

我这样做:

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

    enter image description here

    我认为问题在于细胞仍然活跃? enter image description here

    我找到了解决方案。感谢Oleg!

    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;
              }
            },
    

1 个答案:

答案 0 :(得分:0)

抱歉,但我不了解您要实施的方案。在我看来,单元格编辑(cellEdit: true)的使用并不是最佳选择。无论如何,如果您使用默认值afterSubmitCell,则永远不会调用cellsubmit:'clientArray'addRowDataid="0"相同的用法并不好。您可以生成id重复项。你可以使用

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

代替。使用undefined作为rowid将生成新的唯一 rowid。更好的是使用

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

inlineNav。您需要另外修复defaultValue: "Intim"defaultValue: "IN"

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