Вопрос по .net – Установите значение по умолчанию RadDatePicker в NULL, когда дата не установлена

0

Я связываю RadDatePicker со свойством viewModel dateTime. когда свойство является нулевым в базе данных, я получаю 01/01/0001. Как мне изменить это поведение, чтобы просто оставить поле даты пустым .. пример:

В базе данных === & gt; Experiation_date: NULL In View (GUI) === & gt; experation_date: 01/01/0001

Ожидаемый результат === & gt; experation_date: {Blank}

Ваш Ответ

3   ответа
1

RadDatePicker1.SelectedDate = null;

и в xaml установите DateTimeWatermarkContent в пустую строку:

<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" />
Да, у меня есть решение этой проблемы ... нам просто нужно изменить тип данных этого свойства, которое привязано к & lt; telerik: DataFormDataField & gt; модель с точки зрения контроля. Chets
Как я могу решить проблему для & lt; telerik: DataFormDataField DataMemberBinding = & quot; {Binding ExpirationDate & gt; я сталкиваюсь с той же проблемой для этого Chets
1

ку объект DateTime может фактически потребоваться. (Типичный сценарий - это когда ваш элемент управления привязан к объекту базы данных с типом DateTime, но вы заняты созданием новой записи в вашем элементе управления, и поэтому значение все еще равно нулю на этом этапе.) В таком случае возможно напишите конвертер значений, как это делает Пауло по следующей ссылке:http://www.telerik.com/forums/default-date-value-01-01-001 (См. Его код для EditDateConverter. Он работает так, как есть ...) Я вставляю его код здесь для справки и на случай, если эта ссылка перестанет работать в будущем:

public class EditDateConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value != null && value.GetType().FullName == "System.DateTime")
        {
            var dt2 = (DateTime)value;
            if (dt2 != DateTime.MinValue)
                return value;
        }
        DateTime dt;
        if (!DateTime.TryParse(value as string, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt))
            return dt != DateTime.MinValue ? value : null;
        return dt;
    }
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value == null && targetType.FullName == "System.DateTime")
            return DateTime.MinValue;
        return value;
    }
}

Чтобы использовать его в привязке для вашего RadDatePicker, просто добавьте конвертер в качестве ресурса в свой XAML, а затем добавьте конвертер в свою привязку.

В объявлениях пространства имен XAML вы должны добавить пространство имен вашего конвертера, например:

xmlns:converters="clr-namespace:MyNamespace.Converters"

И тогда в разделе Ресурсы вашего XAML у вас будет:

<UserControl.Resources>
    <converters:EditDateConverter x:Name="NullableDate"/>
</UserControl.Resources>

Затем вы можете просто добавить следующую строку в привязку элемента управления:

Converter={StaticResource NullableDate}

Если у вас теперь нулевая дата, элемент управления будет отображать водяной знак (например, «Введите дату»), а не 01/01/0001.

0

т.е. i.e (DateTime) для управления, тогда она будет использовать дату по умолчанию 01.01.1001 вместо Пустого .... Так что если вы хотите, чтобы значение по умолчанию было пустым, просто измените тип данных вашей переменной, с которой связано управление (DateTime?) .....

DateTime === & gt; DateTime?

Работает нормально ...

Спасибо.!!!

Похожие вопросы