在服务器

时间:2017-02-08 16:10:22

标签: infragistics ignite-ui iggrid

请考虑以下情况:

  • IgniteUI 16.1 igGrid,支持igGridUpdating功能和RESTDataSource
  • 用户通过模态对话框
  • 创建新记录
  • 使用表单数据启动发布请求
  • 服务器处理创建请求并返回一个填充了正确ID的对象
  • 在客户端的成功处理程序中,必须找到并使用从服务器返回的正确ID更新网格行中新添加的内容。
  • ID列用作网格的主键,并且它是隐藏的

添加新行时会发生什么?

我们正在观看infragistics.lob-16.1.js

_dialogOpening(),第68167行,_originalValues是通过$.extend(this._originalValues, values, this._originalValues)计算的,其中values = _getDefaultValues()或其他字values.id = this._pkVal_pkVal是一个计数器,每次出现新行时都会递增。

记住这一点,稍后会调用_endEditDialog(),其中表示用户输入数据的newValues与输入表单的默认值合并:newValues = this._getNewValuesForRow(colElements)后跟newValues = $.extend({}, prevValues, newValues)prevValues与上面的_originalValues相同。

然后调用_addRow(),调用其运行grid.dataSource.addRow()并创建一个事务。

我的观点是更新功能会自动为新行和ID = CurrentRowsCount + 1生成ID。

因此,如果网格包含8条记录,那么新创建的记录将自动分配ID = 9.想象一下,如果现有记录之一的ID = 9,则igGridUpdating' s updateRow(rowId, values)将更新现有行和新行。我真的想调用这个方法来更新从服务器返回的数据行。

我如何干预整个画面并完成新行的更新?

1 个答案:

答案 0 :(得分:4)

自动生成的主键仅用于涵盖最基本的场景。如果您的应用支持删除行,则应使用generatePrimaryKeyValue事件使其保持唯一,从而对其进行更改。

从服务器接收永久密钥后使用updateRow是可行的方法,但是,请记住从allTransactions阵列弹出事务,以便更新不会在下一个服务器上转到服务器{ {1}}致电。