Creating A Custom Lookup in Dynamics AX That Filters Across Multiple Fields

by | Updated August 15, 2016 | Development, Dynamics AX

The normal item lookup in Dynamics AX is fine for finding items when you know part of the Item number or Search name. But, what if we have item information in a related table?

Custom Lookup in Dynamics AX

 

We want to create a custom lookup in Dynamics AX that displays fields from a related table, and allows us to filter records by typing into a search box. Start by creating a regular custom lookup form. Instead of standard data sources, we will use a query as the data source for our form. This will allow us to more easily filter our results. Add a text box and a button above the grid; this will serve as our filter box.

When opened, the form now looks like this:

Creating a Custom Lookup in Dynamics AX

The first problem we encounter is that a normal lookup form will disappear whenever a record is selected. We want to break this behavior and force the user to either click the select button or double click the desired record so that the user is able to use the filter box.

The following code implements this change:

 

Override the clicked method on the Select button:

 

Override the doubleClicked method on the grid:

 

The canSelect variable is a flag that allows us to cancel the form closing that would normally happen when the user clicks on something.

Now for the interesting part.  When the user types a value into the filter box, we want to filter the grid to show all records where any field starts with the entered value.  To do this, we are going to use the addQueryFilter method on the query.  This will allow us to add a WHERE clause to the query that will match multiple fields and OR the results together.  By applying a normal filter we are only able to AND the results.

I also must point out that a query filter applied in this manner differs from the normal Range applied to a QueryBuildDataSource in that it’s applied after the data sources are joined. This can produce unexpected results when your tables are linked with an Outer join.

 

The last thing to do is add a timer to automatically apply the filter 1 second after the user stops typing.

In the class declaration of the form, add a constant for the timeout:  *Remember that the timeout is specified in milliseconds.

Override the clicked method on the SearchValue button to apply the filter when it is clicked:

Add a method to the SearchValue button to apply the filter:

 

Finally, override the textChanged method to start the timer whenever the text box value changes:

 

Now when we type “Microsoft” into the filter we find all records with a field that starts with that string:
Custom Lookup in Dynamics AX

 

 

Related Posts

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Upcoming Events

october

07oct12:00 pm1:00 pmThe Three Paths to Business Central from Dynamics GP

08oct11:00 am12:00 pmConfab with Stoneridge - Livestream - The Vision and Strategy of Microsoft Business Systems

14oct10:00 am10:30 amThe Modern Manufacturer - Managing Complex Cost Modeling

14oct12:00 pm12:30 pmGenerating Custom Inspection or Process Forms

19octAll Day22Stoneridge Connect Fall 2020

22oct11:00 am12:00 pmConfab with Stoneridge - Livestream - Stoneridge Connect Recap

28oct10:00 am10:30 amThe Modern Manufacturer - Engineering Change Management: Introduction of NEW Functionality for Manufacturers Using Dynamics 365

november

18nov10:00 am10:30 amThe Modern Manufacturer - Tears and Trauma of MRP

About Stoneridge
Stoneridge Software is a unique Microsoft Gold Partner, with emphasis on partner. With specialties in Microsoft Dynamics 365, Microsoft Dynamics AX, Microsoft Dynamics NAV, Microsoft Dynamics GP and Microsoft Dynamics CRM, we focus on attracting the most knowledgeable experts in the field to our team, and prioritize delivering stellar solutions with maximum impact for your business. At Stoneridge, we are deeply committed to your results. Each engagement is met with a dedicated team, ready to provide thorough, tailored, and expert service. Based in Minnesota, we intentionally “step into your shoes,” wherever you are. We focus on what you care about, and develop trusting, long-term relationships with our clients.

Subscribe To Our Blog

Sign up to get periodic updates on the latest posts.

Thank you for subscribing!

X