最新消息:ww12345678 的部落格重装上线,希望大家继续支持。

Dynamics 365 FO中事件处理程序方法 / Form Event handler methods in Dynamics 365 FO [#Dyn365FO]

网络文摘 William 1699浏览 0评论
Hi Guys, Let’s discuss today the different event handlers in Dynamics 365 FO. Now we don't have the leverage 😉to overwrite existing code anymore so all you have is event handlers to manipulate standard functionality. However, event handers were available in the earlier version as an optional and best practice but now it’s the only option. I will be sharing different event handler so we can cover most of the methods with different parameters. 1. Form dataSource event hander: Here I will be using the vendTable form to get table buffer and perform additional business logic or validation. Vendtable = Form name vendTable = form data source name [FormDataSourceEventHandler(formDataSourceStr(Vendtable, vendTable), FormDataSourceEventType::Written)] public static void vendTable_OnWritten(FormDataSource sender, FormDataSourceEventArgs e) {     FormRun                 form           = sender.formRun();     FormDataSource          vendTable_ds =       form.dataSource(formDataSourceStr(Vendtable,Vendtable)) as FormDataSource;    Vendtable     Vendtable= vendTable_ds.cursor(); <Now to got table buffer, perform business logic/validation> } lets see one more example below; 2. Form DataSource while closing the form (same will apply for OnInitialized, [FormEventHandler(formStr(EcoResAttributeValue), FormEventType::Closing)] public static void EcoResAttributeValue_OnClosing(xFormRun sender, FormEventArgs e) {      FormDataSource ecoResProduct_ds   =          sender.dataSource(formDataSourceStr(EcoResAttributeValue, EcoResProductAttributeValue));       EcoResProductAttributeValue      ecoResAttributeValue = ecoResProduct_ds.cursor(); <YOUR CODE> }    3.  Post-event hander of Form init or any other standard method method [[PostHandlerFor(formStr(Ledger), formMethodStr(Ledger, init))] public static void Ledger_Post_init(XppPrePostArgs _args) { #ISOCountryRegionCodes FormRun form = _args.getThis(); FormDesign design = form.design(); FormControl revaluationAccount = design.controlName(formControlStr(Ledger, revaluationAccount)); FormControl currencyRevaluation = design.controlName(formControlStr(Ledger, currencyRevaluation)); <your code> } 4. Form control event hander: [FormControlEventHandler(formControlStr(LogisticsPostalAddress, Roles), FormControlEventType::Modified)] public static void Roles_OnModified(FormControl sender, FormControlEventArgs e) { FormRun element = sender.formRun(); FormControl purposeCtrl   = element.design().controlName(formControlStr(LogisticsPostalAddress, Roles)); FormDataSource logisticsLocation_DS = element.dataSource(formDataSourceStr(LogisticsPostalAddress, LogisticsLocation)); <business logic> } Cheers, Harry Follow us on Facebook to keep in rhythm with us. @Facebook
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址