在jqGrid中,您可以一次内联编辑多行,然后执行一次提交吗?

我们正在使用jQuery('#grid').editRow()jQuery('#grid').editRow()function,它允许您内联编辑行中的字段。

jqGrid是否支持一次内联编辑多行,我可以在多行中进行更改然后一次提交所有行?

我们试图避免必须逐个对每一行进行更改,并且每次都要对服务器执行单独的“往返”,因为我们要为大量记录批量编辑多个字段并且一个“提交”。

jqGrid不实现多行的内联编辑。 您可以使用本地编辑并手动将所有更改发布到服务器,但您必须自己实施所有更改的提交。

我个人不会在我的项目中实现这种行为。 原因是我认为网站应该始终支持并发(乐观并发最有意义)。 如果一个人尝试将更改提交到服务器,服务器可以回答并发错误:其他人已经修改了数据。 在应该刷新网格数据并且应该重复编辑行的情况下。 在使用乐观并发的情况下,我看到实现编辑多行的问题。 错误消息将如何显示? 如果更改了许多行,错误消息应该如何? 如果出现错误,用户应该怎么做? 他/她应该重复完整的数据更改吗? 用户的观点从哪里获益?

在我所有的jqGrid实现中几乎立即提交了一行的编辑。 所以我认为不需要在项目中一次做多行。 在并发错误的情况下用户的缺点是因为“往返”减少的优点而更大。 由于与服务器的连接非常好,因此在我的客户环境中发送数据不是问题。

原始JQGrid实现中无法对多行进行内联编辑。 原始实现的作用是,您编辑和失去焦点的每一行都将被提交。

相反,创建一个这样的自定义实现:1。覆盖(扩展)现有的grid.inline.js并编写自己的编辑行并保存行。 2.在编辑行function中,配置以添加要单独收集的脏行(已编辑)。 3.在保存行function中,您只能将脏行提交给服务器。

并且为了防止相同数据的并发更新,您可以通过以下任一方式使用版本控制机制:1。为所有行设置版本字段(隐藏)。 当一行变脏时,增加版本字段。 2.提交行时,检查现有版本号和新版本号。 如果存在不匹配,则对用户进行亲密/更新现有的。 (这个,你可以很容易地实现)

而已! 希望这很有用! 🙂

我不太了解jqGrid,但是我做了这个简单的测试(我可能会遗漏一些东西):

  1. 转到jqGrid演示页面http://www.trirand.com/blog/jqgrid/jqgrid.html
  2. 加载道路编辑/基本示例页面。
  3. 手动运行此代码:

     jQuery("#rowed1").jqGrid('editRow', '11'); jQuery("#rowed1").jqGrid('editRow', '12'); jQuery("#rowed1").jqGrid('editRow', '13') 
  4. 编辑三行

  5. 手动运行此代码:

     jQuery("#rowed1").jqGrid('saveRow', '11'); jQuery("#rowed1").jqGrid('saveRow', '12'); jQuery("#rowed1").jqGrid('saveRow', '13'); 

当然url参数是必需的,我认为你可以使用callback选项来收集所有已编辑的行。

希望这可以帮助