x++ - 如何通过 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
}
我知道我可以通过抛出异常来完成它,但我认为这不是官方的方式。
那么如何通过官方的方式取消超级通话呢?
解决方案
我认为不可能实现您想要的。LedgerJournalTable 表单上的 Approve 按钮中的 super() 调用在框架表单管理之外什么都不做,例如屏幕刷新和其他不会影响逻辑的任务(因为它是常规按钮而不是菜单项按钮) . 该按钮正在代码中创建一个新的菜单函数并显式调用它,但实际上并未在 super() 调用中调用菜单项。
我会在扩展程序中创建另一个批准按钮,隐藏开箱即用按钮,并在扩展程序按钮的 OnClicked 事件中复制原始按钮的逻辑,然后以您需要的任何方式修改它,例如跳过菜单功能调用基于您的要求规定的某些逻辑/条件。
推荐阅读
- python - 有条件地子集数据框
- excel - 使用 VBA 宏将数据从一个 Excel 工作簿提取到另一个工作簿 - 错误 #9
- c++ - SFINAE 有别名,重载问题
- python - 如何打印可以被 3 和 5 整除的 0 到 100 的数字?
- c# - 在 UWP PasswordBox 中过滤字符的正确方法是什么?
- javascript - 父状态更新后如何仅在子组件中调用一次方法
- c# - 用于搜索和替换流的 Knuth Morris Pratt 搜索算法
- android - 有没有办法在Android中调用snackbar.make()?
- jenkins - 在 Jenkins 中,如何连续并行运行脚本直到构建完成?
- java - 如何禁用谷歌键盘文本建议