"Go to the Main Table Form" differences between Axapta 2.x and Dynamics AX 4
Good morning,
The "Go To Main Table Form" functionality in Axapta used to filter on the child form for the calling record, as well as update as the parent form changed record. In AX 4 that is no longer the case, though child forms opened through menuitem buttons do still behave this way. What happens is that in AX 4, the calling record is no longer passed in args.record() (therefore, linkActive() is no longer triggered on the child datasource); the args members lookupField() and lookupValue() are populated instead with the calling control's information.
If for some reason you want to get back to the jumpref() behavior of Axapta 2.x, add the following code to the SysSetupFormRun class new() method. You may want to create a per-user parameter to enable/disable this feature:
void new(Args args)
{
(...)
SysSetupFormRun formRun;
;
{
(...)
SysSetupFormRun formRun;
;
if (!args.record() && args.lookupField()
&& SysUserInfo::find().MyNewJumpRef2xNoYesParameter
&& SysDictClass::is(args.caller(), classnum(SysSetupFormRun)))
{
formRun = args.caller();
if (formRun.objectSet() && formRun.objectSet().cursor())
{
args.record(formRun.objectSet().cursor());
}
}
&& SysUserInfo::find().MyNewJumpRef2xNoYesParameter
&& SysDictClass::is(args.caller(), classnum(SysSetupFormRun)))
{
formRun = args.caller();
if (formRun.objectSet() && formRun.objectSet().cursor())
{
args.record(formRun.objectSet().cursor());
}
}
super(args);
(...)
}
(...)
}
Note: See SysFormRun::isCalledFromJumpRef(_args, _field) for example
Note2: This implementation is very flawed and doesn't work on records that contain two or more fields with similar relationships (such as the Ledger Accounts on Item Groups). This should instead be coded by adding a QueryBuildDynalink linking the parent and child forms together through the related fields. I leave the details up to the reader.
本文探讨了从Axapta 2.x到Dynamics AX 4中GoToMainTableForm功能的变化。在AX4中,此功能不再过滤子表单并更新父表单记录。文章提供了恢复旧行为的方法,并指出该方法存在的局限。

被折叠的 条评论
为什么被折叠?



