Managed Code Custom Lookup in Enterprise portal axapta

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