JumpRef on form extension/ Access child form record from parent form
Apply JumpRef on form extension/ Access child form record from parent form
Use case: Jump to child form from standard form field and filter records on the child form.
Parent form: Let's suppose "SalesTable" is the parent form, and "SalesTable_DS" is its primary data source.
Child form: XXX_TestForm is the child form, XXXTestTable_DS is the primary data source.
Parent form extension:
[ExtensionOf(formStr(SalesTable))]
public final class XXXSalesTable_Extension
{
public void jumpRef(FormControl _formControl)
{
XXXTestTable testTable; // Your target table
MenuFunction menuFunction;
Args args = new Args();
str refValue = _formControl.valueStr();
if (testTable.RecId)
{
select firstonly testTable where
testTable.DlvMode == refValue;
args.record(testTable);
// Define the display menu item for the target form
menuFunction = new MenuFunction(menuitemDisplayStr(XXX_TestTableDisplayMI), MenuItemType::Display);
menuFunction.run(args);
}
}
// Override jumpRef method on form initialized.
[FormEventHandler(formStr(SalesTable), FormEventType::Initialized)]
public static void SalesTable_OnInitialized(xFormRun sender, FormEventArgs e)
{
FormStringControl control =
sender.design().controlName(formControlStr(SalesTable, SalesTable_XXXDlvMode));
// SalesTable_XXXDlvMode is the parent field where you want to apply jumpRef.
control.registerOverrideMethod(methodStr(FormStringControl, jumpRef),
methodStr(XXXSalesTable_Extension, jumpRef), sender);
}
}
Code on child form:
[Form]
public class XXX_TestForm extends FormRun
{
[DataSource]
class XXXTestTable
{
public void init() // init() of XXXTestTable_DS
{
super();
XXXTestTable testTable = element.args().record();
if (testTable.RecId)
{
QueryBuildDataSource qbds = XXXTestTable_ds.queryBuildDataSource();
qbds.addRange(fieldNum(XXXTestTable, DlvMode)).value(testTable.DlvMode);
XXXTestTable_ds.executeQuery();
}
}
}
}
Comments
Post a Comment