【发布时间】:2017-06-26 08:47:10
【问题描述】:
请考虑以下情况:
- 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)和@987654331 @ 与上面的 _originalValues 相同。
然后调用_addRow(),它在运行时调用grid.dataSource.addRow()并创建一个事务。
我的意思是更新功能会自动为新行和ID = CurrentRowsCount + 1 生成 ID。
因此,如果网格包含 8 条记录,那么新创建的记录将自动分配 ID = 9。想象一下,如果现有记录之一的 ID = 9,那么 igGridUpdating 的 updateRow(rowId, values) 将更新现有的两行和新的。我真的很想调用这个方法来用从服务器返回的数据更新行。
如何介入全局,完成新行的更新?
【问题讨论】:
标签: infragistics ignite-ui iggrid