Filtering the Dojo Lookup Control in the Infor CRM web client

When setting up a new dojo widget that utilizes the Lookup control (Sage.UI.Controls.Lookup) you are able to pass in the configuration options for the lookup. This includes things like the store, or sdata feed that the lookup will use, what columns show in the lookup, and also filters on the lookup. These options are passed into the config object of the lookup when instantiated like shown here by passing in an object called “this.LookupConfig”:

		this.lup_Manufacturer = new Lookup({
                    id: 'lu_Custom',
                    allowClearingResult: true,
                    readonly: true,
                    showEntityInfoToolTip: false,
                    config: this.LookupConfig

Inside of the the config object you have two ways of filtering the lookup.

You can utilize the SeedProperty and SeedValue properties. Be aware that this is handled by the lookup’s base object the Sage.UI.SDataLookup. Essentially it constructs a sdata filter on the lookup feed of SeedProperty eq “SeedValue”. So this only works to pre filter based on a single condition where the property must equal some value. You can hack around this by doing something like what is shown in this article

So if you wanted to filter a lookup where the entity’s Status = “Open” you could set the configuration object’s Seed properties like:

 seedValue: 'Open',
 seedProperty: 'Status',

What about if you want to filter and not use an equal to operator? Well for that you can use the preFilters object in the configuration object. The prefilter is an array so you can add multiple Filters which then get appended together using AND logic. So if you wanted to show an entity where Status <> “Closed” and Type = “Banana” you could do something like this:

preFilters: [
{ propertyName: 'Status', conditionOperator: 'ne', filterValue: 'Closed' },
{ propertyName: 'Type', conditionOperator: 'eq', filterValue: 'Banana' }

Be aware that Pre-filters are always in play, where as the Seed properties can be overridden on a different search if the configuration object’s overrideSeedValueOnSearch is set to true.

Want content like this delivered to your inbox? Sign up for our newsletter!

Kris Halsrud

Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.

Submit a Comment

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