“Go to the Main Table Form” differences between Axapta 2.x and Dynamics AX 4
來源:互聯網
上載者:User
"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;
; 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());
}
}
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.