0

我有一个名为 PayEFTPOS 的按钮, 请在此处查看图片

单击此按钮时将调用此方法

[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 中更改,但刷新后未更改”

4

1 回答 1

0

当我第一次开始时,这让我很受打击。提供的代码实际上并没有更新视图后面的缓存。结果是缓存不是的,所以它没有被识别为需要保存。相反,您的缓存记录副本会更新,这与实际缓存本身非常不同。有几种方法可以做到这一点,但到目前为止,为了与您的代码保持一致,您应该能够简单地执行更新,如下所示。

[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 方法)时,它将触发相关基础图和图扩展中的任何事件处理程序。如果您打算继续使用此记录,则应使用语法文档 = Base.Document.Update(documents); 以便您的记录(文件)副本也得到更新。否则,您可能会添加更多更改,再次更新视图,并在丢失由事件处理程序执行的更改时遇到麻烦。

作为旁注,没有必要指定this.Base,因为是隐含的。您可以简单地声明Base以节省一些击键。使用this vs. Base可以帮助我跟踪我是否尝试在当前图形/扩展或 Base 图形中调用代码,并且this.Base让我花一点时间来思考代码所在的位置打电话。

于 2020-09-08T19:17:41.447 回答