This should also be a common task for Dynamics AX developers.
Fortunately, there's a little helper class in AX to make it easier for us, the MultiSelectionHelper.
For example, if you want to get a set of selected records in a grid, you could use it like this:
Fortunately, there's a little helper class in AX to make it easier for us, the MultiSelectionHelper.
For example, if you want to get a set of selected records in a grid, you could use it like this:
MyTableBuffer myTableBuffer;
MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct();
Set selectedRecords = new Set(Types::Record);
selectionHelper.parmDataSource(myTableBuffer_DS);
myTableBuffer = selectionHelper.getFirst();
while (myTableBuffer)
{
selectedRecords.add(myTableBuffer);
myTableBuffer = selectionHelper.getNext();
}
MultiSelectionHelper selectionHelper = MultiSelectionHelper::construct();
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.
Another simplest way is
dataset.Columnname;
Eg.:
MainAccount_ds is a dataset then write like MainAccount.MainAccountId;
to get current selected row on the grid's Account Number.
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:
Another simplest way is
dataset.Columnname;
Eg.:
MainAccount_ds is a dataset then write like MainAccount.MainAccountId;
to get current selected row on the grid's Account Number.
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 for (i = 1; i <= caller.dataSourceCount(); i++) { formDataSource = caller.dataSource(i); if (formDataSource.table() == tableNum(MyTableBuffer)) { break; } } // 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); myTableBuffer= helper.getNext(); }}
No comments:
Post a Comment