Hi Girish,
I now call the build query method in the modified method of the "worker" control and "customer contract" control
and i had to reset control value with conNull() as well
But i have one last issue now. When i first click the dialog and click on the lookup control of the worker it doesn't return anything... i have to click it twice to see the lookup result
class AACaseDetailCreate_EventHandler
{
[FormControlEventHandler(formControlStr(CaseDetailCreate, AACustomerContract), FormControlEventType::Modified)]
public static void AACustomerContract_OnModified(FormControl sender, FormControlEventArgs e)
{
if(sender.valueStr())
{
multiSelectCtrl.set(conNull());
}
multiSelectCtrl.refreshQuery(sender.formRun().buildQuery(sender.valueStr()));
}
[FormControlEventHandler(formControlStr(CaseDetailCreate, AAWorker), FormControlEventType::Modified)]
public static void AAWorker_OnModified(FormControl sender, FormControlEventArgs e)
{
FormStringControl customerContract = sender.formRun().design().controlName(formControlStr(CaseDetailCreate, AACustomerContract)) as FormStringControl;
FormRun formRun = sender.formRun();
SysLookupMultiSelectCtrl workerMultiSelectCtrl = formRun.aaMultiSelectCtrl();
if(sender.valueStr() == '')
{
if(workerMultiSelectCtrl)
{
workerMultiSelectCtrl.set(conNull());
}
}
workerMultiSelectCtrl.refreshQuery(formRun.buildQuery(customerContract.text()));
}
[FormControlEventHandler(formControlStr(CaseDetailCreate, AAWorker), FormControlEventType::Lookup)]
public static void AAWorker_OnLookup(FormControl sender, FormControlEventArgs e)
{
FormStringControl customerContract = sender.formRun().design().controlName(formControlStr(CaseDetailCreate, AACustomerContract)) as FormStringControl;
if(customerContract.text() != '')
{
SysLookupMultiSelectCtrl multiSelectCtrl;
Query query = new Query();
QueryBuildDataSource qbds = query.addDataSource(tableNum(ResourceView));
QueryBuildDataSource qbds1 = qbds.addDataSource(tableNum(PROJVALEMPLPROJSETUP));
qbds1.joinMode(JoinMode::InnerJoin);
qbds1.addLink(fieldNum(ResourceView, RecId), fieldNum(PROJVALEMPLPROJSETUP, Resource));
QueryBuildDataSource qbds2 = qbds1.addDataSource(tableNum(Table1));
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldNum(PROJVALEMPLPROJSETUP, ProjId), fieldNum(Table1, OrderNumber));
qbds2.addRange(fieldNum(Table1, OrderNumber)).value(queryValue(customerContract.text()));
qbds.addSelectionField(FieldNum(ResourceView, ResourceId));
qbds.addSelectionField(FieldNum(ResourceView, Name));
qbds1.addSelectionField(fieldNum(ProjValEmplProjSetup, Projid));
qbds2.addSelectionField(fieldNum(Table1, OrderNumber));
multiSelectCtrl = SysLookupMultiSelectCtrl::constructWithQuery(sender.formRun(), sender, query);
FormRun formRun = sender.formRun();
formRun.aaMultiSelectCtrl(multiSelectCtrl);
}
else
{
SysLookupMultiSelectCtrl multiSelectCtrl;
Query query = new Query();
QueryBuildDataSource qbds = query.addDataSource(tableNum(HcmWorkerDetailsView));
qbds.addSelectionField(FieldNum(HcmWorkerDetailsView, AAPersonnelNumber));
qbds.addSelectionField(FieldNum(HcmWorkerDetailsView, Name));
multiSelectCtrl = SysLookupMultiSelectCtrl::constructWithQuery(sender.formRun(), sender, query);
FormRun formRun = sender.formRun();
formRun.aaMultiSelectCtrl(multiSelectCtrl);
}
}
}[ExtensionOf(formStr(CaseDetailCreate))]
final class CaseDetailCreateAA_Extension
{
public SysLookupMultiSelectCtrl multiSelectCtrl;
public SysLookupMultiSelectCtrl aaMultiSelectCtrl(SysLookupMultiSelectCtrl _multiSelectCtrl = multiSelectCtrl)
{
multiSelectCtrl = _multiSelectCtrl;
return multiSelectCtrl;
}
Public Query buildQuery(Table1OrderNumber _customerContract)
{
Query query;
if(_customerContract != '')
{
query = new Query();
QueryBuildDataSource qbds = query.addDataSource(tableNum(ResourceView));
QueryBuildDataSource qbds1 = qbds.addDataSource(tableNum(PROJVALEMPLPROJSETUP));
qbds1.joinMode(JoinMode::InnerJoin);
qbds1.addLink(fieldNum(ResourceView, RecId), fieldNum(PROJVALEMPLPROJSETUP, Resource));
QueryBuildDataSource qbds2 = qbds1.addDataSource(tableNum(Table1));
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldNum(PROJVALEMPLPROJSETUP, ProjId), fieldNum(Table1, OrderNumber));
qbds2.addRange(fieldNum(Table1, OrderNumber)).value(queryValue(_customerContract));
qbds.addSelectionField(FieldNum(ResourceView, ResourceId));
qbds.addSelectionField(FieldNum(ResourceView, Name));
qbds1.addSelectionField(fieldNum(ProjValEmplProjSetup, Projid));
qbds2.addSelectionField(fieldNum(Table1, OrderNumber));
}
else
{
query = new Query();
QueryBuildDataSource qbds = query.addDataSource(tableNum(HcmWorkerDetailsView));
qbds.addSelectionField(FieldNum(HcmWorkerDetailsView, AAPersonnelNumber));
qbds.addSelectionField(FieldNum(HcmWorkerDetailsView, Name));
}
return query;
}
}