在acumatica中动态更改方法中的数据时单击保存和释放按钮?
Click On Save and Release Buttons when change data in method dynamically in acumatica?
我有一个名为 PayEFTPOS 的按钮,
See Image Here
当点击这个按钮时会调用这个方法
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Pay EFTPOS")]
protected void customAddView()
{
var documents = this.Base.Document.Current;
documents.DocDesc = "Value 1";
documents.ExtRefNbr = "Value 2";
this.Base.Actions.PressSave();`
}
此方法中“描述和支付金额”字段的数据会动态变化
然后将单击保存按钮以动态保存数据
但问题是“这些字段中的数据仅在 ui 中更改,但刷新后未更改”
当我刚开始的时候,这让我很痛苦。提供的代码实际上并没有更新视图后面的缓存。结果是缓存不是 dirty 所以它没有被识别为需要保存。相反,您的缓存记录副本 已更新,这与实际缓存本身有很大不同。有几种方法可以做到这一点,但为了与您目前的代码保持一致,您应该能够简单地执行如下所示的更新。
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Pay EFTPOS")]
protected void customAddView()
{
var documents = Base.Document.Current; // This saves the cache to a temporary object
documents.DocDesc = "Value 1";
documents.ExtRefNbr = "Value 2";
Base.Document.Update(documents); // This updates the actual cache with your changes and causes event handlers to fire
Base.Actions.PressSave();
Base.release.Press(); // Press the release button in the base graph (as asked in comment)
}
请注意,当您更新视图(.Update 方法)时,它将触发相关基础图和图扩展中的任何事件处理程序。如果您打算继续使用此记录,则应使用语法 documents = Base.Document.Update(documents); 这样您的记录副本 (documents) 也会更新.否则,您可能会添加更多更改,再次更新视图,并且 运行 因丢失事件处理程序执行的更改而陷入困境。
作为旁注,没有必要指定 this.Base,因为 this 是隐含的。您可以简单地声明 Base 来保存一些击键。使用 this 与 Base 可以帮助我跟踪我是否正在尝试调用当前 graph/extension 或基本图中的代码, this.Base 花了我一些时间来思考我正在调用的代码所在的位置。
我有一个名为 PayEFTPOS 的按钮, See Image Here
当点击这个按钮时会调用这个方法
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Pay EFTPOS")]
protected void customAddView()
{
var documents = this.Base.Document.Current;
documents.DocDesc = "Value 1";
documents.ExtRefNbr = "Value 2";
this.Base.Actions.PressSave();`
}
此方法中“描述和支付金额”字段的数据会动态变化
然后将单击保存按钮以动态保存数据
但问题是“这些字段中的数据仅在 ui 中更改,但刷新后未更改”
当我刚开始的时候,这让我很痛苦。提供的代码实际上并没有更新视图后面的缓存。结果是缓存不是 dirty 所以它没有被识别为需要保存。相反,您的缓存记录副本 已更新,这与实际缓存本身有很大不同。有几种方法可以做到这一点,但为了与您目前的代码保持一致,您应该能够简单地执行如下所示的更新。
[PXButton(CommitChanges = true)]
[PXUIField(DisplayName = "Pay EFTPOS")]
protected void customAddView()
{
var documents = Base.Document.Current; // This saves the cache to a temporary object
documents.DocDesc = "Value 1";
documents.ExtRefNbr = "Value 2";
Base.Document.Update(documents); // This updates the actual cache with your changes and causes event handlers to fire
Base.Actions.PressSave();
Base.release.Press(); // Press the release button in the base graph (as asked in comment)
}
请注意,当您更新视图(.Update 方法)时,它将触发相关基础图和图扩展中的任何事件处理程序。如果您打算继续使用此记录,则应使用语法 documents = Base.Document.Update(documents); 这样您的记录副本 (documents) 也会更新.否则,您可能会添加更多更改,再次更新视图,并且 运行 因丢失事件处理程序执行的更改而陷入困境。
作为旁注,没有必要指定 this.Base,因为 this 是隐含的。您可以简单地声明 Base 来保存一些击键。使用 this 与 Base 可以帮助我跟踪我是否正在尝试调用当前 graph/extension 或基本图中的代码, this.Base 花了我一些时间来思考我正在调用的代码所在的位置。