My Contract Class:
[ExtensionOf(classStr(LedgerTransStatementContract))]final class LedgerTransStatementContract_Sitcom_Extension{ public List DataAreas; [ DataMemberAttribute('DataAreas'), AifCollectionTypeAttribute('DataAreas', Types::String), SysOperationLabelAttribute(literalStr(/Data Area/)), SysOperationDisplayOrderAttribute('1') ] public List parmDataAreas(List _DataAreas = DataAreas) { DataAreas = _DataAreas; return DataAreas; }}
[ExtensionOf(classStr(LedgerTransStatementUIBuilder))]final class LedgerTransStatementUIBuilder_Sitcom_Extension { public DialogField dialogDataArea; public LedgerTransStatementContract_Sitcom_Extension contract; public void postBuild() { next postBuild(); contract = this.dataContractObject() as LedgerTransStatementContract_Sitcom_Extension; dialogDataArea = this.bindInfo().getDialogField(contract, methodStr(LedgerTransStatementContract_Sitcom_Extension, parmDataAreas)); dialogDataArea.registerOverrideMethod(methodStr(FormStringControl, lookup), methodStr(LedgerTransStatementUIBuilder_Sitcom_Extension, GetDataArea), this); if(dialogDataArea) { dialogDataArea.lookupButton(2); } } private void GetDataArea(FormStringControl _control) { Query query = new query(); QueryBuildDataSource qbds = query.addDataSource(tableNum(CompanyInfo)); qbds.fields().dynamic(false); qbds.fields().clearFieldList(); qbds.addSelectionField(fieldNum(CompanyInfo, DataArea)); SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull()); }}