成功处理服务器上的创建请求后更新客户端上新创建的记录
Update newly created record on client after successfully processing the Create request on server
请考虑以下情况:
- IgniteUI 16.1 igGrid 支持 igGridUpdating 功能和 RESTDataSource
- 用户通过模态对话框创建新记录
- Post请求是用表单数据发起的
- 服务器处理创建请求和returns一个填充有正确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 ID = CurrentRowsCount + 1
。
所以,如果网格包含 8 条记录,那么新创建的记录将自动分配 ID = 9。想象一下,如果现有记录之一的 ID = 9,那么 igGridUpdating 的 updateRow(rowId, values)
将更新两行,现有的和新的。我真的很想调用此方法,以便使用从服务器返回的数据更新行。
如何介入全局,完成新行的更新?
auto-generated主键只是为了覆盖最基本的场景。如果您的应用程序支持行删除,您应该使用 generatePrimaryKeyValue
事件更改它们以使其保持唯一。
从服务器收到永久密钥后使用 updateRow 是可行的方法,但是,请记住从 allTransactions
数组中弹出事务,这样更新就不会在下一个 saveChanges
呼唤。
请考虑以下情况:
- IgniteUI 16.1 igGrid 支持 igGridUpdating 功能和 RESTDataSource
- 用户通过模态对话框创建新记录
- Post请求是用表单数据发起的
- 服务器处理创建请求和returns一个填充有正确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 ID = CurrentRowsCount + 1
。
所以,如果网格包含 8 条记录,那么新创建的记录将自动分配 ID = 9。想象一下,如果现有记录之一的 ID = 9,那么 igGridUpdating 的 updateRow(rowId, values)
将更新两行,现有的和新的。我真的很想调用此方法,以便使用从服务器返回的数据更新行。
如何介入全局,完成新行的更新?
auto-generated主键只是为了覆盖最基本的场景。如果您的应用程序支持行删除,您应该使用 generatePrimaryKeyValue
事件更改它们以使其保持唯一。
从服务器收到永久密钥后使用 updateRow 是可行的方法,但是,请记住从 allTransactions
数组中弹出事务,这样更新就不会在下一个 saveChanges
呼唤。