0

RadDatePickerをviewModeldateTimeプロパティにバインドしています。データベースでプロパティがnullの場合、01/01/0001を取得します。この動作を変更して、日付フィールドを空白のままにする方法。例:

データベース内===>experiation_date:NULLビュー内(GUI)===> experation_date:01/01/0001

期待される結果===>experation_date:{空白}

4

3 に答える 3

1

SelectedDateをnullに設定します(DBNullではありません)。

RadDatePicker1.SelectedDate = null;

xamlで、DateTimeWatermarkContentを空の文字列に設定します。

<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" />
于 2012-04-18T10:07:08.330 に答える
1

データ型をDateTimeからDateTimeに変更できるとは限りませんか?実際には、DateTimeオブジェクトが必要になる場合があります。(一般的なシナリオは、コントロールがDateTime型のデータベースオブジェクトにバインドされているが、コントロールに新しいレコードを作成するのに忙しく、その時点で値がnullのままである場合です。)このような場合、次のことが可能です。次のリンクでPauloのように値コンバーターを記述します: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}

日付がnullの場合、コントロールは0001/01/01ではなく透かし(「日付の入力」など)を表示します。

于 2014-03-14T08:05:09.353 に答える
0

null許容でない日時変数、つまり(DateTime)を制御にバインドする場合は、空ではなくデフォルトの01/01/001日付を使用します。したがって、デフォルト値を空にする場合は、変数のデータ型を変更するだけです。これは(DateTime?)....に制御するためにバインドされています。

DateTime ===> DateTime?

それはうまくいきます...

ありがとうございました。!!!

于 2012-04-24T15:57:59.830 に答える