如何在通过格式化程序操作保存按钮保存后更新jqgrid行id

如何在通过格式化程序操作保存按钮保存后更新jqgrid行id,jqgrid,Jqgrid,jqGrid编辑的行id在响应中返回save from id后需要刷新。 我尝试了下面的代码,但出现了未定义的消息框 如何更新行id? 通过“保存操作”按钮更新行后如何获取响应文本 安德鲁斯 grid.jqGrid({ colModel: [{name:_actions,width:45, formatter:"actions", formatoptions: {keys:true, delbutton:false, onSuccess:function

jqGrid编辑的行id在响应中返回save from id后需要刷新。 我尝试了下面的代码,但出现了未定义的消息框

如何更新行id? 通过“保存操作”按钮更新行后如何获取响应文本

安德鲁斯

grid.jqGrid({
  colModel: [{name:_actions,width:45,
  formatter:"actions",
  formatoptions:
    {keys:true,
     delbutton:false,
     onSuccess:function (rowID, response) {
      alert(response);             
      $("#" + rowID).attr("id", response.responseText);
      },

    onEdit: function (rowID) {
     if (typeof (lastSelectedRow) !== 'undefined' && rowID !== lastSelectedRow)
       cancelEditing($('#grid'));
       lastSelectedRow = rowID;
     }
}}

我不想回到以前的讨论,但我只想提醒大家,更改
id
不是一个好的做法

您可以尝试通过放置
$(“#”+rowID).attr(“id”,response.responseText)来解决此问题内部的。在这种情况下,更改将在内联编辑代码中处理旧id后完成


此外,您还可以验证以下内容。在中,在jqGrid内部保存的其他地方重命名
id
可能很重要。例如,
selrow
selarrrow
将保留所选行的ID。

主要问题是,操作按钮没有像内联编辑aftersavefunc那样传递旧行ID和响应文本的单一事件。我通过将对全局变量的响应存储在
onSuccess=function(jqXHR){actionresponse=jqXHR;return true;}“
中解决了这个问题,并在
afterSave=function(rowID){aftersavefunc(rowID,actionresponse)}中使用了它
.Db scheme使用自然主键ID,并部署到数千个站点。更改此设置,即使按照您的建议创建重复的代理ID,也是一项非常繁重的工作,因为需要重写大量的生产应用程序。@Andrus:好的,我理解,如果安装了许多旧版本的软件,更新场景可能会很复杂复杂。我没有考虑这个问题。不过,我建议您不要更改现有表的主键。我建议在表中添加一个可以保存自动增量值的附加列。之后,您可以在该列上放置唯一约束或仅一个索引,以便通过c中的值进行快速搜索列并将该值用作jqGrid的id。在其他应用程序中,您可以继续使用旧的主键。它应该work@Andrus:保存
jqXHR
时应小心。编写代码时,如果不使用指针,指针将被分配到
null
。如果不这样做,则可以使用mem因为无法释放
jqXHR
的内存,所以无法释放。谢谢。在loadComplete中添加了空行。如果此行保存在内联编辑中,则需要从服务器响应中更新jqGrid行id。因此,如果使用integer主键,也会出现此问题。在我删除jqID()后从您的另一个示例调用它看起来自然主键在不改变模式的情况下与jqGrid一起工作正常。我向afterSave处理程序添加了
actionresponse=null
。希望这可以防止泄漏。