gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 00:34:38 26 4
gpt4 key购买 nike

请考虑以下场景:

  • 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 的 updateRow(rowId, values)将更新两行,现有行和新行。我真的想调用这个方法,以便用从服务器返回的数据更新行。

    我怎么能干预全貌并完成新行的更新?

    最佳答案

    自动生成的主键仅用于覆盖最基本的场景。如果您的应用程序支持行删除,您应该使用 generatePrimaryKeyValue 更改它们以保持它们的唯一性。事件。

    从服务器接收永久 key 后使用 updateRow 是可行的方法,但是,请记住从 allTransactions 中弹出事务。数组,因此更新不会在下一个 saveChanges 上发送到服务器称呼。

    关于infragistics - 成功处理服务器上的创建请求后,更新客户端上新创建的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42118122/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com