This is code hint for Managed Code Custom Lookup in Enterprise portal of axapta.
protected void Name_Lookup(object sender, AxLookupEventArgs e)
{
AxLookup nameLookup = e.LookupControl; string partyName = "*";
try
{
// We set the lookup range based on either the name selected or "*"
// We get the range value from the current view field value partyName = this.DataSourceView.DataSetView.GetCurrent().GetFieldValue("DirPartyTable!Name").ToString();
// Create the lookup dataset - we will do a lookup in the DirPartyTable table using (Proxy.SysDataSetBuilder sysDataSetBuilder = Proxy.SysDataSetBuilder.constructLookupDataSet(this.AxSession.AxaptaAdapter, TableMetadata.TableNum(this.AxSession, "DirPartyTable")))
{
// Set the run time generated data set as the lookup data set nameLookup.LookupDataSet = new DataSet(this.AxSession, sysDataSetBuilder.toDataSet());
}
// DataSet has to be init'ed before accessing the data sources nameLookup.LookupDataSet.Init();
// Filter the lookup using (Proxy.Query query = nameLookup.LookupDataSet.DataSetViews[0].MasterDataSource.query())
{
// If the partyName is blank we assign the "*" as the range query.dataSourceNo(1).addRange(TableDataFieldMetadata.FieldNum(this.AxSession, "DirPartyTable", "Name")).value = String.IsNullOrEmpty(partyName) ? "*" : "*" + partyName + "*"; }
// Specify the lookup fields used // TODO: Temporary fix nameLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, nameLookup.LookupDataSetViewMetadata.ViewFields["EntityType"]));
nameLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, nameLookup.LookupDataSetViewMetadata.ViewFields["Type**"]));
nameLookup.Fields.Add(AxBoundFieldFactory.Create(this.AxSession, nameLookup.LookupDataSetViewMetadata.ViewFields["Name"]));
// Specify the select field nameLookup.SelectField = "RecId";
}
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;
}
}
}