Get formRun, Form control, datasource and selected record from form datasource using Eventhandlers on Form in D365

 Get formRun, Form control, datasource and selected record from form datasource using Eventhandlers on Form in D365




Song Nghia - Technical Consultant

Thanks for: http://daxingwitheshant.blogspot.com/2018/11/get-formrun-form-control-datasource-and.html

Get formRun, Form control, datasource and selected record from form datasource :


[FormDataSourceEventHandler(formDataSourceStr(MyForm, MyRandomTableDS), FormDataSourceEventType::Written)] public static void MyRandomTableDS_OnWritten(FormDataSource sender, FormDataSourceEventArgs e)

{


FormRun formRun = sender.formRun() as FormRun;


// you can even call custom methods

formRun.myCustomMethod();


// Get the selected datasource record

TableName tableBuffer = sender.cursor();


// Get datasource variable

FormDataSource DSVariable = sender.formRun().dataSource(“TableName”);

}


Get form datasource from xFormRun

[FormEventHandler(formStr(SomeForm), FormEventType::Initialized)] public static void SomeForm_OnInitialized(xFormRun sender, FormEventArgs e)

{

FormDataSource MyRandomTable_ds = sender.dataSource(formDataSourceStr(SomeForm, MyRandomTableDS));

}


Access form control from xFormRun

[FormEventHandler(formStr(SomeForm), FormEventType::Initialized)] public static void SomeForm_OnInitialized(xFormRun sender, FormEventArgs e)

{

// set the control to invisible as an example

sender.design().controlName(formControlStr(SomeForm, MyControl)).visible(false);

}


Get FormRun from form control

[FormControlEventHandler(formControlStr(MyForm, MyButton), FormControlEventType::Clicked)] public static void MyButton_OnClicked(FormControl sender, FormControlEventArgs e)

{

FormRun formRun = sender.formRun() as FormRun;

formRun.myCustomMethod();

}


Get current record in form control event

[FormControlEventHandler(formControlStr(SomeForm, SomeButton), FormControlEventType::Clicked)] public static void SomeButton_OnClicked(FormControl sender, FormControlEventArgs e)

{

// as an example the datasource number is used for access; I perceive the formDataSourceStr as more robust

SomeTable callerRec = sender.formRun().dataSource(1).cursor();

}

Previous Post
Next Post

post written by: