Skip to main content

Simple Custom Lookup Ax 2012 R3

In this post we'll see how easily we can create a custom lookup.

Suppose I have two fields 
1. Country/Region
2. StateId

Now I want to create a lookup so that If I will select any country then state lookup must show states which belongs to my selected country

for example If I have selected India in country field then it must show only indian state in state field

Lets see how can we achieve it.

Step 1: Create a table and then create two fields
           1. CountryRegionId
           2. StateId
Step 2: Create a form
Step 3: For custom lookup we will use State master table i.e. LogisticsAddressState
here we can see there is a method lookupStateId

public client static void lookupStateId(
    FormStringControl               _ctrl,
    LogisticsAddressCountryRegionId _countryRegionId)
{
    SysTableLookup       sysTableLookup = SysTableLookup::newParameters(tableNum(LogisticsAddressState), _ctrl);
    Query                query = new Query();
    QueryBuildDataSource queryBuildDataSource;

    sysTableLookup.addLookupfield(fieldNum(LogisticsAddressState, StateId));

    // <GEERU>
    if (isCountryRegionRU(_countryRegionId))
    {
        sysTableLookup.addLookupMethod(tableMethodStr(LogisticsAddressState, fullName_RU));
        sysTableLookup.addLookupMethod(tableMethodStr(LogisticsAddressState, propertiesZipCode_RU));
        sysTableLookup.addLookupMethod(tableMethodStr(LogisticsAddressState, propertiesGniCode_RU));
    }
    else
    {
    // </GEERU>
        sysTableLookup.addLookupfield(fieldNum(LogisticsAddressState, CountryRegionId));
        sysTableLookup.addLookupfield(fieldNum(LogisticsAddressState, Name));
    // <GEERU>
    }
    // </GEERU>

    queryBuildDataSource = query.addDataSource(tableNum(LogisticsAddressState));
    queryBuildDataSource.addRange(fieldNum(LogisticsAddressState, CountryRegionId)).value(queryValue(_countryRegionId));

    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}

Step 4 : Go to Design and select CountryRegionId control then go to properties and set AutoDeclaration property "YES"

Step 5:

Now override lookup method on Form > Datasource > Fields >StateId > methods > lookup

and customize lookup method

public void lookup(FormControl _formControl, str _filterStr)
{
    
    LogisticsAddressState::lookupStateId(_formControl, S3_countryStateLookup_CountryRegionId.valueStr());
}

Step 5: Now select India in country field and then you can see lookup it will show only Indian state 


Comments

Post a Comment

Popular posts from this blog

How to change client Language in ax 2012

Hello,  As you know that Dynmics Ax run on different languages. So I gonna tell you how to change client language country/region specific. this is nothing but a very simple step to do. Go To > File > Tools > Options > After that go to General tab and select the language which you want to use in your client. then apply and exit. In my case I was using Arabic language. Now restart your client and see the difference. You can do it from your database also . Go to Database server  . In my case it is sql server 2014. Select your database > tables > UserInfo > select the user > change the language code. Done Thanks.

Simple x++ query with enum value range

static void queryEnumValue(Args _args) {     Query                   query;     QueryRun                queryrun;     QueryBuildDataSource    qbds;     QueryBuildRange         qbr;     PurchTable              purchTable;     ;         query = new Query();         qbds = query.addDataSource(tableNum(PurchTable));     qbds.addSortField(fieldNum(PurchTable, PurchId), SortOrder::Ascending);     qbr     = qbds.addRange(fieldNum(PurchTable, PurchStatus));         qbr.value(enum2str(PurchStatus::Received));         queryrun = new QueryRun(query);         while(queryrun.next())     {         purchTable = query...

Unit Conversion by code in ax 2012 R3 , X++

static void unitConversion() {     SysExcelApplication xlsApplication;     SysExcelWorkBooks xlsWorkBookCollection;     SysExcelWorkBook xlsWorkBook;     SysExcelWorksheets xlsWorkSheetCollection;     SysExcelWorksheet xlsWorkSheet;     SysExcelRange xlsRange;     SysExcelCells Cells;     SysExcelCell RCell;     CommaIO inFile;     int nRow,i;     DialogField dialogPath;     Dialog dialog;     Filename filename;         UnitOfMeasureConversion             unitOfMeasureConversion;     UnitOfMeasure                       unitOfMeasure;     EcoResProduct                       ecoResProduct;     RecId               ...