Override Lookup AX7 & D365FO
Here is the small example to override lookup ..
copy the lookup event handler of the field and paste the event into any class
/// <summary>
///
/// </summary>
/// <param name="sender">receiving value in parameter</param>
/// <param name="e">receiving value in parameter</param>
[FormControlEventHandler(formControlStr(PayrollEmployerTaxRegion, Overview_StateId), FormControlEventType::Lookup)]
public static void Overview_StateId_OnLookup(FormControl sender, FormControlEventArgs e)
{
/// write your lookup code hereif control or field already have lookup to we need to cancel parent lookup execution otherwise we will get exception.
below code you can use to cancel parent lookup ---
FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
//cancel super() to prevent error.
ce.CancelSuperCall();
}
Here is the complete code sample
/// <summary>
///
/// </summary>
/// <param name="sender">receiving value in parameter</param>
/// <param name="e">receiving value in parameter</param>
[FormControlEventHandler(formControlStr(PayrollEmployerTaxRegion, Overview_StateId), FormControlEventType::Lookup)]
public static void Overview_StateId_OnLookup(FormControl sender, FormControlEventArgs e)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(LogisticsAddressState), sender);
Query query = new Query();
// Filter lookup to only show US states
query.addDataSource(tableNum(LogisticsAddressState)).addRange(fieldNum(LogisticsAddressState, CountryRegionId)).value(LogisticsAddressCountryRegion::findByISOCode(SysCountryRegionCode::countryInfo(curext())).CountryRegionId);
// Sort the lookup by state Id
query.dataSourceTable(tableNum(LogisticsAddressState)).addOrderByField(fieldNum(LogisticsAddressState, StateId), SortOrder::Ascending);
// Add fields
sysTableLookup.addLookupfield(fieldNum(LogisticsAddressState, StateId));
sysTableLookup.addLookupfield(fieldNum(LogisticsAddressState, Name));
// Run lookup
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
//cancel super() to prevent error.
ce.CancelSuperCall();
}
ref: - https://community.dynamics.com/blogs/post/?postid=c7132ede-dd1b-4408-a038-4354f0a2c7be
No comments:
Post a Comment