In this post, I want to show you how to create an event handler for the OnValidatingWrite event at the form datasource level in X++.
First, open the form you are interested in within the Visual Studio designer, navigate to the data source, right-click on the “OnValidatingWrite” event, and select “Copy Event Handler Method.”

Create a class and a method similar to the following code snippet:
/// summary>
/// CustParametersFrm_EventHandler class
/// summary>
public class CustParametersFrm_EventHandler
{
/// <summary>
/// Handles the ValidatingWrite event for the SalesParameters data source.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormDataSourceEventHandler(formDataSourceStr(CustParameters, SalesParameters), FormDataSourceEventType::ValidatingWrite)]
public static void SalesParameters_OnValidatingWrite(FormDataSource sender, FormDataSourceEventArgs e)
{
MyTable myTable addressType;
FormDataSource salesParameters_ds = sender as FormDataSource;
var eventArgs = e as FormDataSourceCancelEventArgs;
if (eventArgs != null && salesParameters_ds != null)
{
SalesParameters salesParametersLoc = salesParameters_ds.cursor() as SalesParameters;
if (salesParametersLoc.MyCustomField)
{
select count(RecID) from myTable;
if (myTable.RecId == 0)
{
boolean ret = checkFailed("Error please check data");
eventArgs.cancel(true);
}
}
}
}
}