首页 > 解决方案 > 如何通过 Dynamics 365 FO 中的扩展取消按钮单击事件的超级调用?

问题描述

我想给一个按钮的点击事件添加一个检查,当检查失败时,我想取消超级调用,怎么做?

我曾尝试在单击事件的事件处理程序中使用 FormControlCancelableSuperEventArgs 和 FormControlCancelEventArgs,但它们都返回 null。

下面是我的测试代码。

[FormControlEventHandler(formControlStr(LedgerJournalTable, Approve), FormControlEventType::Clicking)]
public static void Approve_OnClicking(FormControl sender, FormControlEventArgs e)
{
    FormControlCancelEventArgs  ce1 = e as FormControlCancelEventArgs;  // ce1 returns null
    FormControlCancelableSuperEventArgs ce2 = e as FormControlCancelableSuperEventArgs;  // ce2 returns null too
}

我知道我可以通过抛出异常来完成它,但我认为这不是官方的方式。

那么如何通过官方的方式取消超级通话呢?

标签: x++dynamics-365-operations

解决方案


我认为不可能实现您想要的。LedgerJournalTable 表单上的 Approve 按钮中的 super() 调用在框架表单管理之外什么都不做,例如屏幕刷新和其他不会影响逻辑的任务(因为它是常规按钮而不是菜单项按钮) . 该按钮正在代码中创建一个新的菜单函数并显式调用它,但实际上并未在 super() 调用中调用菜单项。

我会在扩展程序中创建另一个批准按钮,隐藏开箱即用按钮,并在扩展程序按钮的 OnClicked 事件中复制原始按钮的逻辑,然后以您需要的任何方式修改它,例如跳过菜单功能调用基于您的要求规定的某些逻辑/条件。


推荐阅读