RSS

LookUp in a Dialog

13 Dec

Selective lookups in dialogs

Hey people,
Often we create lots of dialogs in our development for user input and many times we face situations where we need to populate lookups in one field depending on the data in other fields.
In form it is very easy to override the lookup method of the control and write the suitable logic to implement the lookup. But what about dialogs, how do we create selective lookups in dialogs…
Here is a sample class developed on AX 4.0 SP2 platform illustrating the selective lookups creation in dialogs.
The main points to remember are…
  • The field in the dialog is a FormStringControl type and not DialogField type
  • The class extends from RunBase class
  • We need to enable the control method over loading option (Can be viewed in the dialogPostRun method in the sample class in the above link)
  • We need to write a lookup method with the name _lookup and write the lookup logic in this method


Exportfile for AOT version 1.0 or later
Formatversion: 1

***Element: CLS

; Microsoft Dynamics Class: SamSelectiveLookup unloaded
; --------------------------------------------------------------------------------
  CLSVERSION 1

  CLASS #SamSelectiveLookup
    PROPERTIES
      Name                #SamSelectiveLookup
      Extends             #RunBase
      RunOn               #Called from
    ENDPROPERTIES

    METHODS
      Version: 3
      SOURCE #classDeclaration
        #class SamSelectiveLookup extends RunBase
        #{
        #    FormStringControl   custGroupCtrl, customerCtrl;
        #}
      ENDSOURCE
      SOURCE #Customer_lookup
        #void Customer_lookup()
        #{
        #    Query                   query          = new Query();
        #    SysTableLookup          sysTableLookup = SysTableLookup::newParameters(tableNum(custTable), customerCtrl);
        #    ;
        #
        #    sysTableLookup.addLookupField(fieldNum(custTable, accountNum));
        #    sysTableLookup.addLookupField(fieldNum(custTable, name));
        #
        #    query.addDataSource(tableNum(custTable)).addRange(fieldNum(CustTable, CustGroup)).value(custGroupCtrl.text());
        #
        #    sysTableLookup.parmQuery(query);
        #    sysTableLookup.performFormLookup();
        #}
      ENDSOURCE
      SOURCE #dialog
        #protected Object dialog(Dialog dialog, boolean forceOnClient)
        #{
        #    DialogRunBase ret;
        #
        #    ret = super(dialog, forceOnClient);
        #
        #    custGroupCtrl = ret.formBuildDesign().addControl(FormControlType::String, 'CustGroup');
        #    custGroupCtrl.extendedDataType(103);
        #
        #    customerCtrl = ret.formBuildDesign().addControl(FormControlType::String, 'Customer');
        #    customerCtrl.extendedDataType(99);
        #
        #    return ret;
        #}
      ENDSOURCE
      SOURCE #dialogPostRun
        #public void dialogPostRun(DialogRunbase dialog)
        #{
        #    ;
        #    super(dialog);
        #
        #    dialog.dialogForm().formRun().controlMethodOverload(true);
        #    dialog.dialogForm().formRun().controlMethodOverloadObject(this);
        #
        #    custGroupCtrl = dialog.dialogForm().formRun().design().controlName('CustGroup');
        #    customerCtrl = dialog.dialogForm().formRun().design().controlName('Customer');
        #}
      ENDSOURCE
      SOURCE #pack
        #public container pack()
        #{
        #    return conNull();
        #}
      ENDSOURCE
      SOURCE #unpack
        #public boolean unpack(container packedClass)
        #{
        #    return true;
        #}
      ENDSOURCE
      SOURCE #main
        #static void main(Args _args)
        #{
        #    SamSelectiveLookup test1 = new SamSelectiveLookup();
        #    ;
        #
        #    if (test1.prompt())
        #    {
        #        test1.run();
        #    }
        #}
      ENDSOURCE
    ENDMETHODS
  ENDCLASS

***Element: END
Advertisements
 
Leave a comment

Posted by on December 13, 2011 in X++

 

Tags:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
All About Dynamics 365

Dynamics 365, D365, Implementor

Syed Rafay Ali

This blog contains information about Functional techniques and guidelines in Microsoft Dynamics AX, including tips, tricks, tutorials, tools and upcoming news enhancement in Microsoft Dynamics Ax

Philippsen's Blog

Everyday findings in my world of .net and related stuff

Microsoft Dynamics AX

A great WordPress.com site

Finite Minds

Adventures in IoT

Dynamics Ax

Technical Knowledge

timsaxblog

A blog about implementing Microsoft Dynamics AX and Dynamics 365 for Operations

Microsoft Dynamics 365 Blog

"Learn it all, not Know it all" in Dynamics 365 - Enterprise Edition, A Blog by Sandeep Chaudhury

DEVSerra - Dynamics AX development blog

Your official Microsoft Dynamics AX blog.

OrganicAX

Discovering Dynamics

AX

A blog by Hai Nguyen

Learn Dynamics Ax with Johnkrish

Live as if you were to die tomorrow. Learn as if you were to live forever - Mahatma Gandhi ****** The more I learn, the less I know - Albert Einstein

Twisted Untwirled

Just another WordPress.com site

ramdynamicsax

Just another WordPress.com site

guyterry's Dynamics AX blog

Just another Dynamics AX blog

%d bloggers like this: