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