How to get multi selected records on the grid / datasource

If you want to acknowledge multi selected records on form . write below code on button clicked
---------------------------------------------------------------------------------------------------------------------------

void clicked()
{
    if (Box::yesNo("Do you want to acknowledge the selected records", DialogButton::No) == DialogButton::No)
    {
        return;
    }
    else
    {
       element.updateAcknowledgementFlag();
    }
}
__ now updateAcknowledgementFlag method will have the multiselected record

public void updateAcknowledgementFlag()



{

afmATPPostalCodeDlvMode aTPPostalCodeDlvMode;

MultiSelectionHelper helper;

helper = MultiSelectionHelper::construct();

helper.parmDatasource(afmATPPostalCodeDlvMode_ds);

aTPPostalCodeDlvMode = helper.getFirst();
 
while (aTPPostalCodeDlvMode.RecId != 0)



{
 
aTPPostalCodeDlvMode.selectForUpdate(true);



aTPPostalCodeDlvMode.NewZipCode = NoYes::No;
 
if(aTPPostalCodeDlvMode.validateWrite())



{

aTPPostalCodeDlvMode.update();

}

aTPPostalCodeDlvMode = helper.getNext();

}

afmATPPostalCodeDlvMode_ds.research();

}
 
---------------------------------------------------------------------------------------------------------------------------


For example, if you want to assign selected records to Set/List/container  in a grid, you could use it like this:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MyTableBuffer            myTableBuffer;
MultiSelectionHelper     selectionHelper = MultiSelectionHelper::construct();

// declare set,list and container as per needs

Set                      selectedRecords = new Set(Types::Record); 
 
  
  
selectionHelper.parmDataSource(myTableBuffer_DS);
  
myTableBuffer = selectionHelper.getFirst();
  
while (myTableBuffer)
{
    selectedRecords.add(myTableBuffer);
  
    myTableBuffer = selectionHelper.getNext();
}
--------------------------------------------------------------------------------------------------------------------------

The code above should be very useful when getting the list of selected records directly on the form, but if you want to get the selected records in a class that was called from a form, for example, you could use the MultiSelectionHelper like this:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
public static void main(Args _args)
{    
    FormDataSource          formDataSource;    
    MyTableBuffer           myTableBuffer;
    FormRun                 caller = _args.caller();
    MultiSelectionHelper    helper = MultiSelectionHelper::createFromCaller(caller);
    Counter                 i;
  
    // First we need to get the correct form data source
    if(args && args.dataset() == tableNum(MyTableBuffer))
{
       
        MyTableBuffer= args.record();
}
  
    // We then tell the selection helper object to create ranges for the selected records
    helper.createQueryRanges(formDataSource.queryBuildDataSource(), fieldStr(MyTableBuffer, RecId));
  
    // Now we can traverse the selected records
    myTableBuffer = helper.getFirst();
  
    while (myTableBuffer)
    {
        info(myTableBuffer.RecId); 
// write / call the methods to execute the business logic here
  
        myTableBuffer= helper.getNext();
    }
}
 
 

Comments