To reproduce:
- Bind RadDataEntry to an object that has DateTime property.
- Change the value using the FreeFormDateTime mask type (enter 101010).
- The value is not changed.
Workaround:
RadDateTimePicker editor;
void radDataEntry1_EditorInitializing(object sender, EditorInitializingEventArgs e)
{
if (e.Property.Name == "obj")
{
editor = new RadDateTimePicker();
editor.Format = DateTimePickerFormat.Short;
editor.DateTimePickerElement.TextBoxElement.MaskType = MaskType.FreeFormDateTime;
RadMaskedEditBoxElement element = editor.DateTimePickerElement.TextBoxElement.TextBoxItem.Parent as RadMaskedEditBoxElement;
FreeFormDateTimeProvider provider = element.Provider as FreeFormDateTimeProvider;
provider.ParsedDateTime += provider_ParsedDateTime;
e.Editor = editor;
}
}
void provider_ParsedDateTime(object sender, EventArgs e)
{
editor.Value = (DateTime)(sender as FreeFormDateTimeProvider).Value;
}
This also seems to affect the RadDateTimePicker when it is on an ordinary form, and the GridDateTimeCellElement. Is there a work-around for those? Will they be fixed also?
I tried subscribing to the ParsedDateTime event, but it never seems to get called.
public class CustomRadDateTimePicker : RadDateTimePicker
{
protected override void OnCreateControl()
{
base.OnCreateControl();
DateTimePickerElement.Calendar.ShowFooter = true;
DateTimePickerElement.TextBoxElement.MaskType = MaskType.FreeFormDateTime;
RadMaskedEditBoxElement element = DateTimePickerElement.TextBoxElement.TextBoxItem.Parent as RadMaskedEditBoxElement;
FreeFormDateTimeProvider provider = element.Provider as FreeFormDateTimeProvider;
provider.ParsedDateTime += ProviderOnParsedDateTime;
}
private void ProviderOnParsedDateTime(object sender, EventArgs eventArgs)
{
Value = (DateTime)(sender as FreeFormDateTimeProvider).Value;
}
}