Axapta 如何从AX 2012中的代码调用菜单项
我在PurchTable“Register”菜单项的clicked方法中有一些自定义代码,现在我需要在执行buttons函数后从代码中运行Register命令 我的问题是如何从代码中调用Register命令Axapta 如何从AX 2012中的代码调用菜单项,axapta,x++,dynamics-ax-2012,Axapta,X++,Dynamics Ax 2012,我在PurchTable“Register”菜单项的clicked方法中有一些自定义代码,现在我需要在执行buttons函数后从代码中运行Register命令 我的问题是如何从代码中调用Register命令 将寄存器按钮的自动声明设置为是 然后直接调用单击的,: register.clicked(); 在表单方法中使用大量代码是不可取的 : 三层体系结构的基本概念是表单应该是 仅用于表示层,因此没有其他代码,例如 表单上应该有业务逻辑。表格上的代码也 降低了它们的可重用性和进一步定制的便利
将
寄存器
按钮的自动声明
设置为是
然后直接调用单击的,
:
register.clicked();
在表单方法中使用大量代码是不可取的
:
三层体系结构的基本概念是表单应该是
仅用于表示层,因此没有其他代码,例如
表单上应该有业务逻辑。表格上的代码也
降低了它们的可重用性和进一步定制的便利性;例如
如果您想开发一个企业门户,那么在表单上编写的代码
必须在类或表方法等中再次编写
这将使实现变得复杂
我看到您实际上正在尝试执行clicked()方法,但是如果您想通过代码执行菜单项,可以执行以下操作:
new MenuFunction(menuItemDisplayStr(MyDisplayMenuItem), MenuItemType::Display).run();
当然,可以更改上面的代码以执行不同类型的菜单项,例如,下面的代码运行输出菜单项:
new MenuFunction(menuItemOutputStr(MyOutputMenuItem), MenuItemType::Output).run();
如果您在试图执行的菜单项上需要任何参数,可以将其与Args类一起传递:
这将是推荐的解决方案,而不是自动声明注册表按钮。这样,编译器可以跟踪菜单项的更改。
Args args = new Args();
args.record(myArgumentRecord);
args.caller(this);
new MenuFunction(menuItemOutputStr(MyOutputMenuItem), MenuItemType::Output).run(args);