Logo
Windows XP
Windows Vista
Windows 7
Windows Azure
Windows Server
Windows Phone
EPL Standings
 
 
Windows Server

Microsoft Dynamics AX 2009 : Working with Data in Forms - Processing multiple records

6/12/2012 5:25:49 PM
In this recipe, we explore several ways of achieving this goal. We will modify the Items form in the Inventory management module by adding a new button to it, which lists currently selected records in the overview grid.

How to do it...

  1. 1. In AOT, open the InventTable form and create a new method with the following code:

    void processSelectedItems()
    
    {
    InventTable inventTableLocal;
    ;
    for (inventTableLocal = InventTable_ds.getFirst(true) ?
    InventTable_ds.getFirst(true) :
    InventTable;
    inventTableLocal;
    inventTableLocal = InventTable_ds.getNext())
    {
    info(strfmt(
    "You've selected item '%1'",
    inventTableLocal.ItemId));
    }
    }
    
  2. 2. Add a new Button to the form's ButtonGroup group:

    Property Value
    Name ProcessSelectedItems
    Text Process
    MultiSelect Yes

  1. 3. Override its clicked() with the following code:

    void clicked()
    
    {;
    super();
    element.processSelectedItems();
    }
    
  2. 4. To test the record selection, open Inventory management | Item Details, select several records using SHIFT or CTRL and click the Process button. The selected items should be displayed in the Infolog:

How it works...

The key element in this recipe is a for statement in processSelectedItems(). First, it checks if more than one record is selected by calling getFirst(true) on the InventTable form data source. If yes, the for loops all the selected records from the data source, otherwise it uses the cursor, which corresponds to the currently selected single record. All selected records are then stored in the local variable inventTableLocal. In this example, we just output inventory item numbers into the Infolog using the global info() function.

The ProcessSelectedItems button is used to call the function above once the user clicks it. Notice that its property MultiSelect is set to Yes to ensure it is still enabled when multiple records are selected.

There's more...

I have also experienced that sometimes Dynamics AX users struggle to select multiple records using SHIFT or CTRL. Sometimes, it is not clear that the form itself supports multiple record processing. In such cases a more convenient way of selecting multiple records could be to add a new checkbox in front of each record. This would remove all confusion and improve user experience. In order to implement that, we need to make few changes to the example above.

First, we add a new Map variable to the form's class declaration:

Map marked;

And in the form's init() right after the variable declaration section we create its instance:

marked = new Map(Types::Int64, Types::String);

Then, we create a new edit method on the InventTable data source with the following code:

edit boolean editMark(
boolean _set,
InventTable _inventTable,
boolean _mark)

{;
if (_set)
{
if (!_mark)
{
if (marked.exists(_inventTable.RecId))
{
marked.remove(_inventTable.RecId);
}
}
else
{
marked.insert(
_inventTable.RecId,
_inventTable.ItemId);
}
}
return marked.exists(_inventTable.RecId);
}


					  

We also add a new CheckBox to the top of the form's Grid in the Overview tab page with the following properties:

Property Value
Name Mark
Label Select
DataSource InventTable
DataMethod editMark

Finally, we have to modify processSelectedItems() to loop though the map. Replace the method with the following code:

void processSelectedItems()

{
MapEnumerator mapEnumerator;
;
mapEnumerator = marked.getEnumerator();
while (mapEnumerator.moveNext())
{
info(strfmt(
"You've selected item '%1'",
marked.lookup(mapEnumerator.currentKey())));
}
}

Open the Items form again and notice that now it has a new checkbox Select in front of each record. Pick several records using it and click Process. The selected items should be displayed in the Infolog:

The principle of this technique is that we use a Map type object to store the list of selected item numbers. The editMarked() method is bound to the checkbox control and is responsible for adding a record to the map upon user selection and removing it from the map if the user deselects the checkbox.

We also use the MapEnumerator class to retrieve item numbers from the map for further processing.
Other -----------------
- Microsoft Dynamics AX 2009 : Working with Data in Forms - Creating default data wizards
- Microsoft Systems Management Server 2003 : Developing Site Hierarchies (part 2) - International Site Considerations
- Microsoft Systems Management Server 2003 : Developing Site Hierarchies (part 1) - Network Performance
- BizTalk 2009 : Dealing with Extremely Large Messages (part 2) - Large Message Encoding Component
- BizTalk 2009 : Dealing with Extremely Large Messages (part 1) - Large Message Decoding Component
- Microsoft SQL Server 2008 R2 : Client Setup and Configuration for Database Mirroring
- Microsoft SQL Server 2008 R2 : Testing Failover from the Principal to the Mirror
- System Center Configuration Manager 2007 : Site and SQL Server Backups (part 3) - Restoring ConfigMgr Backups - Performing a Site Reset
- System Center Configuration Manager 2007 : Site and SQL Server Backups (part 2) - Restoring ConfigMgr Backups - ConfigMgr Functional Crash
- System Center Configuration Manager 2007 : Site and SQL Server Backups (part 1) - Backing Up ConfigMgr
- Security and Delegation in Configuration Manager 2007 : Securing Configuration Manager Operations
- Security and Delegation in Configuration Manager 2007 : Securing the Configuration Manager Infrastructure (part 4) - Securing Service Dependencies for Configuration Manager
- Security and Delegation in Configuration Manager 2007 : Securing the Configuration Manager Infrastructure (part 3) - Securing Configuration Manager Accounts
- Security and Delegation in Configuration Manager 2007 : Securing the Configuration Manager Infrastructure (part 2) - Securing Configuration Manager Communications
- Security and Delegation in Configuration Manager 2007 : Securing the Configuration Manager Infrastructure (part 1) - Securing Site Systems
- Backing Up the Exchange Server 2007 Environment : Establishing Service Level Agreements & Supporting Backups with Documentation
- Recovering from a Disaster in an Exchange Server 2007 Environment : Recovering Active Directory - The Active Directory Database
- Exchange Server 2010 : Managing Queues
- Exchange Server 2010 : Working with Queues - Accessing the Queue Viewer
- Windows Server 2008 Server Core : Managing the Hard Drive - Managing Partitions with the DiskPart Command
 
 
Most view of day
- Microsoft Exchange Server 2007 : Consolidating a Windows 2000 Domain to a Windows Server 2003 Domain Using ADMT (part 3) - Migrating Groups
- System Center Configuration Manager 2007 : Creating and Modifying Configurations (part 1)
- Troubleshooting Stop Messages : Common Stop Messages (part 1)
- Games and Windows 7 : Using the Games Explorer (part 4) - Managing Your Game Controllers and Other Game-Related Hardware
- Windows Phone 8 : Working with the Windows Phone Software (part 7) - Removing Multimedia Content - Removing a Video from Your Phone
- Windows Server 2012 : Managing networking using Windows PowerShell (part 2) - Examples of network-administration tasks
- Windows Phone 8 : Working with the Windows Phone Software (part 4) - Adding Content from Nonstandard Locations
- Backup and Restore of Microsoft Lync Server 2010 : Restore Processes
- Managing Windows Licensing and Activation : Managing Volume License Activation (part 2) - Leveraging MAK activation, Comparing KMS and MAK activation
- BizTalk Server 2006 : Starting a New BizTalk Project - Creating Your Development Environment
Top 10
- Windows Server 2012 : DHCP,IPv6 and IPAM - Exploring DHCP (part 3) - Creating IPv4 DHCP Scopes
- Windows Server 2012 : DHCP,IPv6 and IPAM - Exploring DHCP (part 2) - Installing DHCP Server and Server Tools
- Windows Server 2012 : DHCP,IPv6 and IPAM - Exploring DHCP (part 1)
- Windows Server 2012 : DHCP,IPv6 and IPAM - Understanding the Components of an Enterprise Network
- Microsoft OneNote 2010 : Using the Research and Translate Tools (part 3) - Translating Text with the Mini Translator
- Microsoft OneNote 2010 : Using the Research and Translate Tools (part 2) - Translating a Word or Phrase with the Research Pane
- Microsoft OneNote 2010 : Using the Research and Translate Tools (part 1) - Setting Options for the Research Task Pane, Searching with the Research Task Pane
- Microsoft OneNote 2010 : Doing Research with Linked Notes (part 2) - Ending a Linked Notes Session, Viewing Linked Notes
- Microsoft OneNote 2010 : Doing Research with Linked Notes (part 1) - Beginning a Linked Notes Session
- Microsoft OneNote 2010 : Doing Research with Side Notes (part 3) - Moving Side Notes to Your Existing Notes
 
 
Windows XP
Windows Vista
Windows 7
Windows Azure
Windows Server
Windows Phone
2015 Camaro