VirtualGridDateTimeEditor: Cannot always change date by just simply typing it.
Repro steps:
Create a RadVirtualGrid
Give it a DateTime column
Make sure the editor (VirtualGridDateTimeEditor) accepts dutch formats for dates (dd-MM-yyyy)
Add a row with value: 30-11-2023
Double click on the value and try to change it my literally typing: "31-12-2023"
Observed behavior:
A field with the value 01-12-2023 (this happens as soon as you type "31")
The user needs to first enter the month, then the day to correct this.
Expected behavior:
A field with the value: 31-12-2023
Observation / suggestion:
The controle tries to validate and correct EVERY input, even when the input is not finished yet. Everybody knows "31-11-2023" is an incorrect value. But during changing it, this should not matter. The scope at that point should be: Making the user happy by accepting the input. When the user leaves the field, or enters the last digit, validation should take place. Or, if halfway entering the value, the totale date is invalid, do not change it and wait for the user to complete.
1 comment
ADMIN
Dinko | Tech Support Engineer
Posted on:15 Mar 2023 14:02
Hi Martin,
Thank you for the provided details and steps.
This behavior comes from the RadDateTimePickerElement inside the editor. The editor is represented by a RadDateTimeEditorElement which derives from RadDateTimePickerElement. You can see the same behavior when using the RadDateTimePicker control stand-alone. In this case, you could set the MaskType property of the TextBoxElement inside the control to FreeFormDateTime. The validation will be triggered when the user leaves the cell. You can set this property in the CellEditorInitialized event handler. Give this property a try and let me know how it goes.
privatevoidRadVirtualGrid1_CellEditorInitialized(object sender, VirtualGridCellEditorInitializedEventArgs e)
{
var dateTimeEditor = e.ActiveEditor as VirtualGridDateTimeEditor;
if (dateTimeEditor != null)
{
var editorElement = dateTimeEditor.EditorElement as RadDateTimeEditorElement;
editorElement.TextBoxElement.MaskType = MaskType.FreeFormDateTime;
editorElement.Format = DateTimePickerFormat.Custom;
editorElement.CustomFormat = "dd-MM-yyyy";
}
}
Regards,
Dinko | Tech Support Engineer
Progress Telerik