【问题标题】:How to remove an event handler in Acumatica如何在 Acumatica 中删除事件处理程序
【发布时间】:2014-12-09 21:30:29
【问题描述】:

我添加了我认为应该删除 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 事件处理程序运行。

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

【问题讨论】:

    标签: erp acumatica


    【解决方案1】:

    解决方案

    结果(感谢 Ivan)

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

    示例:

    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
    
     } 
    

    【讨论】:

    • 在您的代码之前运行基本逻辑可能不是一个坏主意,以防将来发生任何变化,逻辑仍将运行,但您的代码将覆盖该值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2010-10-22
    • 2021-10-29
    相关资源
    最近更新 更多