jqGrid不保存内联行编辑

我在ASP.NET MVC 4网站jQuery 1.7.2中使用jqGrid 4.3.2。 应用程序中有几个位置使用jqGrid。 我现在的一般设置是所有编辑都在本地完成( loadonce: trueclientArray ),并带有内联导航和编辑,所有网格数据都通过AJAX调用在表单提交时发布到服务器。 我对行编辑以及他们提交的事件遇到了一些困难。 您可以在此处查看网站(以及来源,正在进行的总工作,不错)。 如果添加或编辑行,然后单击页面上的其他位置,则不会保存行编辑。 用户必须在行编辑期间的某处按Enter键以保存行。

我在这个问题中略微谈到了这一点, Oleg很乐意回答。 除了按下回车键之外,有没有办法提交行编辑,比如当行失去焦点时?

你能做的是以下几点:

  1. 首先,您必须设置restoreAfterSelect: false选项。 我看到该选项没有记录,但您可以在源代码中看到它。 没有设置inlineNav使用inlineNav来调用restoreRow (见这里 )。
  2. 实现保存onSelectRow中的上一个编辑行(请参阅答案中的代码)或beforeSelectRow内部。 可能更容易使用beforeSelectRow因为最后一个需要保存的编辑行可能只是您可以从selrow选项中获取的最后一个选定行,因为该值尚未在selrow更改。

对于2016年阅读此内容的人来说,此function现已合并到jqGrid中。 请参阅https://github.com/tonytomov/jqGrid/issues/785 。 在撰写本文时,jqGrid 5.1已经发布,所以我希望从5.2版本开始提供此function。 或者只是从GitHub获取最新的代码。

要使用它,只需在jqGrid上设置以下属性:

 ... restoreAfterSelect: false, saveAfterSelect: true, ... 

不再需要实施自己的解决方案。