1

我添加了我认为应该删除 acumatica 基类的事件处理程序的代码。

 public override void Initialize()
 {
 // Remove the event handler on the APTran object for APTran_SubID_FieldDefaulting so we can override it in this module
 Base.FieldDefaulting.RemoveHandler<APTran.subID>(A PTran_SubID_FieldDefaulting);

 }

然而,它仍然贯穿基本代码。如果我删除此代码并保留我的新事件处理程序,它将通过我拥有的事件处理程序运行,然后似乎也通过 Base 事件处理程序运行。

关于如何删除基本事件处理程序以便它只使用新的事件处理程序的任何建议?

4

1 回答 1

5

解决方案

原来(感谢伊万)

我不需要删除事件处理程序,我只需要在扩展中使用指向原始事件处理程序的第三个参数声明事件处理程序,然后我可以选择不调用该委托,如果这是我需要的在我的项目中。

例子:

protected void APTran_SubID_FieldDefaulting(PXCache sender, PXFieldDefaultingEventArgs e, PXFieldDefaulting del)
 {
 APTran row = (APTran)e.Row;
 if (row == null) { return; }
 // do my code here
 // skip calling the original event
 //del.Invoke(sender, e); -- invokes the Base FieldDefaulting event handler

 } 
于 2014-12-09T21:30:29.927 回答