请考虑以下情况:
- 具有 igGridUpdating 功能和 RESTDataSource 的 IgniteUI 16.1 igGrid
- 用户通过模态对话框创建新记录
- 使用表单数据发起发布请求
- 服务器处理创建请求并返回一个对象,填充了正确的 ID
- 在客户端的成功处理程序中,必须找到网格行中新添加的内容并使用从服务器返回的正确 ID 进行更新。
- ID 列用作网格的主键,它是隐藏的
添加新行时会发生什么?
我们正在观看 infragistics.lob-16.1.js
在_dialogOpening()
中,第 68167 行 _originalValues
是通过$.extend(this._originalValues, values, this._originalValues)
、 wherevalues = _getDefaultValues()
或其他词计算的values.id = this._pkVal
。并且_pkVal
是每次出现新行时递增的计数器。
记住这一点,稍后_endEditDialog()
会调用,其中newValues
代表用户输入的数据,与输入表单的默认值合并:newValues = this._getNewValuesForRow(colElements)
后跟newValues = $.extend({}, prevValues, newValues)
和与上面prevValues
相同_originalValues
。
然后调用 an _addRow()
,调用它的运行grid.dataSource.addRow()
并创建一个事务。
我的意思是更新功能会自动为新行生成 ID 和ID = CurrentRowsCount + 1
.
因此,如果网格包含 8 条记录,那么新创建的记录将自动分配 ID = 9。想象一下,如果现有记录之一的 ID = 9,那么 igGridUpdatingupdateRow(rowId, values)
将更新现有行和新行。我真的很想调用这个方法,以便用从服务器返回的数据更新行。
怎么才能介入全局,完成新行的更新呢?