How to remove the top-right corner error mark from the GridCell in WinRT DataGird?
In the SfDataGrid, validation can be done by handling the CurrentCellValidating event. The SfDataGrid does not allow the end-user to move to the other cells until the validation succeeds. In a meantime, you can move to the other cells after pressing Esc key that resets the validation status and error message at the top-right corner.
//Handles the CurrentCellValidating event.
SfdataGrid.CurrentCellValidating += SfdataGrid_CurrentCellValidating;
void SfdataGrid_CurrentCellValidating(object sender, CurrentCellValidatingEventArgs args)
{
if (args.Column.MappingName == "EmployeeSalary" && Convert.ToDouble(args.NewValue) < 20000)
{
args.ErrorMessage = "EmployeeSalary should not less than 20000";
args.IsValid = false;
}
}
It is possible to reset the validation status when the end-user presses Esc key from the edit mode by overriding the GridSelectionController. In the following code example, the validation status and top-right corner error indication is reset by invoking the ValidationHelper.ResetValidations method on pressing the Esc key by overriding the ProcessKeyDown method of the GridSelectionController.
For WPF:
using Syncfusion.UI.Xaml.Grid;
using Syncfusion.UI.Xaml.Grid.Helpers;
// Sets the instance of the customized GridSelectionController class to the SfDataGird.SelectionController property.
SfdataGrid.SelectionController = new GridSelectionControllerExt(SfdataGrid);
public class GridSelectionControllerExt : GridSelectionController
{
public GridSelectionControllerExt(SfDataGrid dataGrid)
: base(dataGrid)
{
}
protected override void ProcessKeyDown(KeyEventArgs args)
{
if (this.CurrentCellManager.HasCurrentCell && this.CurrentCellManager.CurrentCell.IsEditing && args.Key == Key.Escape)
{
var helper = DataGrid.GetValidationHelper();
MethodInfo[] methodInfos = typeof(ValidationHelper).GetMethods(BindingFlags.NonPublic | BindingFlags.Instance);
// Gets the ResetValidations method by using reflection.
var resetValidation = methodInfos.FirstOrDefault(item => item.Name == "ResetValidations");
resetValidation.Invoke(helper, new object[] { true });
this.CurrentCellManager.EndEdit(false);
return;
}
base.ProcessKeyDown(args);
}
}
For WinRT:
public class GridSelectionControllerExt : GridSelectionController
{
public GridSelectionControllerExt(SfDataGrid dataGrid)
: base(dataGrid)
{
}
protected override void ProcessKeyDown(KeyRoutedEventArgs args)
{
if (this.CurrentCellManager.HasCurrentCell && this.CurrentCellManager.CurrentCell.IsEditing && args.Key == VirtualKey.Escape)
{
var helper = DataGrid.GetValidationHelper();
// Gets the ResetValidations method by using reflection.
foreach (var method in helper.GetType().GetRuntimeMethods())
{
if (method.Name.Equals("ResetValidations"))
{
method.Invoke(helper, new object[] { true });
this.CurrentCellManager.EndEdit(false);
return;
}
}
}
base.ProcessKeyDown(args);
}
}
You need to override the GridCellSelectionController class when the SelectionUnit is GridSelecionUnit.Cell.
The corner error mark is enabled when the employeesalary less 20000 as shown in following screenshot

Sample Links: