Lookups in EP

  1. Simple Lookup :- (DataSet Level)

In Dataset –>Datasource–>Table–>Fields–>method

void dataSetLookup(SysDataSetLookup sysDataSetLookup)
{

Query qr = new Query();

qr.addDatasource(tablenum(CustTable));

 sysDataSetLookup.parmLookupFields(new List(Types::String));

sysDataSetLookup.parmLookupFields().addEnd(fieldStr(CustTable, AccountNum));
sysDataSetLookup.parmLookupFields().addEnd(fieldStr(CustTable, CustGroup));

sysDataSetLookup.parmQuery(query);

}

[OR]

void dataSetLookup(SysDataSetLookup sysDataSetLookup)

{

    List list = new List(Types::String);

    Query query = new Query();

    QueryBuildDataSource    queryBuildDataSource;

    QueryBuildRange qbr;

    // Add the table to the query.

    queryBuildDataSource  = query.addDataSource(tableNum(CustTable));

//add the range

    qbr = queryBuildDataSource.addRange( fieldnum(CustTable, AccountNum));

    qbr.value(“1234”);

    qbr.status(RangeStatus::Locked);

     // Specify the fields to use for the lookup.

    list.addEnd(fieldStr(CustTable,AccountNum));

    list.addEnd(fieldStr(CustTable,CustGroup));

    list.addEnd(fieldStr(CustTable,Currency));

     sysDataSetLookup.parmLookupFields(list);

     // Specify the field that is returned from the lookup.

    sysDataSetLookup.parmSelectField(‘AccountNum’);

     // Pass the query to the SysDataSetLookup so that the query is used.

    sysDataSetLookup.parmQuery(query);

}

2. Lookup in Visual Studio

 OnLookup=”ContactForParty_Lookup”
AutoPostBack=”True” LookupButtonDisplaySettings=”Always”>

protected void ContactForParty_Lookup(object sender, AxLookupEventArgs e)
{
AxLookup lookup = e.LookupControl;
DataControlField lookupField;

try
{
lookup.LookupDataSet = new Microsoft.Dynamics.AX.Framework.Portal.Data.DataSet(this.AxSession, “MzkContactPersonLookup”); // MzkContactPersonLookup – dataset contain 3 tables

// DataSet has to be init’ed before accessing the data sources
lookup.LookupDataSet.Init();

//adding ranges to the query Dataset
using (Proxy.Query query = lookup.LookupDataSet.DataSetViews[0].MasterDataSource.query())
{
using (Proxy.QueryBuildDataSource dataSource = query.dataSourceNo(1))
{
using (Proxy.QueryBuildRange range = dataSource.addRange(
TableDataFieldMetadata.FieldNum(this.AxSession, “ContactPerson”, “ContactForParty”)))
{
//AxBoundField VendAccount = (AxBoundField)GetField(this.DealerVendGrp.Fields, “DealerVendAccount”);

range.value = Convert.ToString(this.Mzk_EPSubDevicesDS.GetDataSet().DataSetRun.AxaptaObjectAdapter.Call(“getVendParty”));

}
}
}
// Add fields to the lookup
lookupField = AxBoundFieldFactory.Create(lookup.LookupDataSetViewMetadata.ViewFields[“ContactPersonId”]);
lookupField.SortExpression = “ContactPersonId”;
lookup.Fields.Add(lookupField);

lookupField = AxBoundFieldFactory.Create(lookup.LookupDataSetViewMetadata.ViewFields[“DirPartyLookupGridView!Name”]);
lookupField.SortExpression = “DirPartyLookupGridView!Name”;
lookup.Fields.Add(lookupField);

lookupField = AxBoundFieldFactory.Create(lookup.LookupDataSetViewMetadata.ViewFields[“ContactForParty”]);
lookupField.SortExpression = “ContactForParty”;
lookup.Fields.Add(lookupField);

lookup.LookupDataSet.DataSetViews[0].Sort = “ContactPersonId, DirPartyLookupGridView!Name”;

lookup.SelectField = “DirPartyLookupGridView!Name”;
}
catch (System.Exception ex)
{
AxExceptionCategory exceptionCategory;
// This returns true if the exception can be handled here
if (!AxControlExceptionHandler.TryHandleException(this, ex, out exceptionCategory))
{
// The exception is system fatal – in this case we re-throw.
throw;
}
}
}

[OR]

For using SysDataSetBuilder , use the below namespace

                     using Microsoft.Dynamics.Framework.BusinessConnector.Proxy;

protected void LookupName_Lookup(object sender, AxLookupEventArgs e)

    {

        AxLookup xLookup = e.LookupControl;

        using (Proxy.SysDataSetBuilder mydataSetBuilder = Proxy.SysDataSetBuilder.constructLookupDataSet(this.AxSession.AxaptaAdapter,

                        TableMetadata.TableNum(this.AxSession, “DirPersonName”)))

        {

            xLookup.LookupDataSet = new Microsoft.Dynamics.AX.Framework.Portal.Data.DataSet(this.AxSession, mydataSetBuilder.toDataSet());

        }

        xLookup.LookupDataSet.Init();

        // add fields

        xLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, xLookup.LookupDataSetViewMetadata.ViewFields[“FirstName”]));

        xLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, xLookup.LookupDataSetViewMetadata.ViewFields[“LastName”]));

        xLookup.SelectField = “FirstName”;

        //TextBox1.Text = xLookup.SelectField;

    }