- 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;
}