Monday, August 29, 2022

Multi select Lookup on Form using X++

First Set a global Variable,

public SysLookupMultiSelectCtrl    multicltrl;


Create Lookup method to get the value in field,

       public void lookup()

       {

           Query                       query;

           QueryBuildDataSource        queryBuildDataSource;

           QueryBuildFieldList         fieldList;

 

           super();

 

           query                   = new Query();

           queryBuildDataSource    = query.addDataSource(tableNum(CustTable));

           fieldList               = queryBuildDataSource.fields();

           fieldList.addField(fieldNum(CustTable,AccountNum));

           fieldList.addField(fieldNum(CustTable,CustGroup));

           fieldList.addField(fieldNum(CustTable,RecId));

           fieldList.dynamic(QueryFieldListDynamic::No);

 

           container   selectedField = [tableNum(CustTable), fieldNum(CustTable,AccountNum)];

 

           multicltrl = SysLookupMultiSelectCtrl::constructWithQuery(this.formRun(),this,query,false,selectedField);

       

       }

Create Modified Method to set the value in field,

       public boolean modified()

       {

           boolean ret;

       

           ret = super();

           TestTable.CustomField = con2Str(multicltrl.getSelectedFieldValues(), ';');

           return ret;

       }


Process,

Click on Form Field Lookup button,


Select all field which you wanted,



Now you have multi value in field,



Enjoy 👍

Using COC

[ExtensionOf(formDataFieldStr(ProjTableCreate, ProjTable, GropId))]

final class FormDataSource_Extension

{

   public SysLookupMultiSelectCtrl    multicltrl;

 

   public void lookup(FormControl _formControl, str _filterStr)

   {

       Query                       query;

       QueryBuildDataSource        queryBuildDataSource;

       QueryBuildFieldList         fieldList;

       FormRun                 localFormRun = _formControl.formRun();

       next lookup(_formControl,_filterStr);

 

       query                   = new Query();

       queryBuildDataSource    = query.addDataSource(tableNum(ProjValProjCategoryTable));

       fieldList               = queryBuildDataSource.fields();

 

       fieldList.addField(fieldNum(ProjValProjCategoryTable, GroupId));

       fieldList.addField(fieldNum(ProjValProjCategoryTable, Name));

       fieldList.dynamic(QueryFieldListDynamic::No);

 

       container   selectedField = [tableNum(ProjValProjCategoryTable), fieldNum(ProjValProjCategoryTable, GroupId)];

 

 

       multicltrl = SysLookupMultiSelectCtrl::constructWithQuery(localFormRun,_formControl,query,false,selectedField);

   }

 

   /// <summary>

   ///

   /// </summary>

   public void modified()

   {

       FormDataObject formDataObject = any2Object(this) as FormDataObject;

       FormDataSource formDataSource = formDataObject.datasource();

       ProjTable           projTable;

 

       next modified();

 

       projTable = formDataSource.cursor();

       projTable.GropId = con2Str(multicltrl.getSelectedFieldValues(), ';');

   }

 

}

No comments:

Post a Comment

Workflow Approver Name For PurchRequsition Order

 For First Approver, this.workflowApprover(purchReqTable.RecId);     public void workflowApprover (RecId _recId)  // Requsation Table RecId ...