How to bind table Columns Name in Custom Lookup in Ax 2012


In this article we will see how to bind table all columns name in custom lookup. For that we have to create table for storing getting table fields and tableid. And in form create custom lookup for display value in dropdown. Create custom lookup in form controls and create method for storing values in table. 

publicvoid lookup()
{
//super();
//A_PurchaseOrder::lookupFields(this);
// A_PurchaseOrder PurchaseOrder1;
    Query                   query = new Query();
    QueryBuildDataSource    queryBuildDataSource,qbds1;
    QueryBuildRange         queryBuildRange,qbr1;
    SysTableLookup          sysTableLookup;
tableNametableName = 'A_PurchaseOrder';
    DictField           dictField;
SysModelElement     tables;
SysModelElement     fields;
A_FieldLookUpTableA_FieldLookUpTable;
    DictTable dictTable;
inttmpTableid =    tablename2id(tableName);
inti;
dictTable = new DictTable(tableName2id(tableName));
select A_PurchaseOrder whereA_PurchaseOrder.TableId == tmpTableid;
if(A_PurchaseOrder.TableId == tmpTableid)
    {
whileselect tables
wheretables.ElementType            == UtilElementType::Table       &&
tables.Name                   == tableName
join fields
wherefields.ElementType        == UtilElementType::TableField&&
fields.ParentModelElement == tables.RecId
        {
dictField = new DictField(tables.AxId, fields.AxId);
selectA_FieldLookUpTablewhereA_FieldLookUpTable.A_TableID == int2str(tmpTableid) &&
A_FieldLookUpTable.Label == dictField.label() &&A_FieldLookUpTable.Field==dictField.name();
if(!(A_FieldLookUpTable.A_TableID) && !(A_FieldLookUpTable.Field==dictField.name() && !(A_FieldLookUpTable.Label == dictField.label())))
            {
//Create table and Add fields Label(String),Field(String),A_TableID(int)
//insert into A_FieldLookUpTable table
A_FieldLookUpTable.Label = dictField.label();
A_FieldLookUpTable.Field  = dictField.name();
A_FieldLookUpTable.A_TableID = int2str(tmpTableid);
A_FieldLookUpTable.insert();
            }
        }
    }
//Create an instance of SysTableLookup with the form control passed in
    sysTableLookup = SysTableLookup::newParameters(tablenum(A_FieldLookUpTable), this);

//Add the fields to be shown in the lookup form
//sysTableLookup.addLookupfield(fieldnum(A_FieldLookUpTable, Label));
    sysTableLookup.addLookupfield(fieldnum(A_FieldLookUpTable,Field));

//create the query datasource
queryBuildDataSource = query.addDataSource(tablenum(A_FieldLookUpTable));
queryBuildDataSource.addSortField(fieldNum(A_FieldLookUpTable, Field), SortOrder::Ascending);
queryBuildRange = queryBuildDataSource.addRange(fieldnum(A_FieldLookUpTable, A_TableID));
queryBuildRange.value(A_FieldLookUpTable.A_TableID);

//add the query to the lookup form
sysTableLookup.parmQuery(query);

// Perform lookup
sysTableLookup.performFormLookup();
}

Related Posts

Previous
Next Post »

Thanks for comments.....