成功处理服务器上的创建请求后更新客户端上新创建的记录

Update newly created record on client after successfully processing the Create request on server

请考虑以下情况:

添加新行时会发生什么?

我们在看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 ID = CurrentRowsCount + 1

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

如何介入全局,完成新行的更新?

auto-generated主键只是为了覆盖最基本的场景。如果您的应用程序支持行删除,您应该使用 generatePrimaryKeyValue 事件更改它们以使其保持唯一。

从服务器收到永久密钥后使用 updateRow 是可行的方法,但是,请记住从 allTransactions 数组中弹出事务,这样更新就不会在下一个 saveChanges呼唤。