We use cookies to give you the best experience on our website. If you continue to browse, then you agree to our privacy policy and cookie policy. Image for the cookie policy date
Unfortunately, activation email could not send to your email. Please try again.
Syncfusion Feedback

How to remove the top-right corner error mark from the GridCell by pressing Esc key when validated by handling the CurrentCellValidating event?

Platform: UWP |
Control: SfDataGrid |
.NET Framework: 4.5

 

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);
    }
}

 

Note:

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

employeeSalary

Sample Links:

WPF

WinRT

UWP

 

2X faster development

The ultimate UWP UI toolkit to boost your development speed.
ADD COMMENT
You must log in to leave a comment

Please sign in to access our KB

This page will automatically be redirected to the sign-in page in 10 seconds.

Up arrow icon

Warning Icon You are using an outdated version of Internet Explorer that may not display all features of this and other websites. Upgrade to Internet Explorer 8 or newer for a better experience.Close Icon

Live Chat Icon For mobile