2

ASP MVC で KendoUI DateTimePicker を使用しています。タイム ピッカーを選択すると、00:00 ~ 24:00 の時間が表示されます。これは、人々がスクロールするには扱いにくいものです。どの日でも、08:00-16:00 のみを表示したい。それは可能ですか?これが私が試したものです。有効な DateTime ではないため、これは失敗しました。

                    @(Html.Kendo().DateTimePickerFor(x => x.HearingDate)
                      .Name("HearingDate")
                      .Min(new DateTime(0, 0, 0, 8, 0, 0))
                      .Max(new DateTime(0, 0, 0, 16, 0, 0))
                    )

編集:私が選択した答えは、DateTimePickerでこれを行う方法がないことを理解したら、私を正しい道に導きました。Kendo DatePickerFor と TimePickerFor をブレンドした私のソリューションを次に示します。主に TimePicker で発生した問題が原因で、これを把握するのに何時間もかかりました。私のプロジェクトでは、日付と時刻の両方を null にすることができます。

モデル

[Display(Name = "Hearing Date")]
public DateTime? HearingDate { get; set; }

[Display(Name = "Hearing Time")]
[DataType(DataType.Time)]
public DateTime? HearingTime { get; set; }

[Display(Name = "Hearing Date")]
public DateTime? HearingDateOnly { get; set; }

コントローラ

        if (model.HearingDateOnly != null && model.HearingTime != null)
        {
            var d = model.HearingDateOnly.Value;
            var t = model.HearingTime.Value;
            model.HearingDate = new DateTime(d.Year, d.Month, d.Day, t.Hour, t.Minute, t.Second);
        }

意見

                        @(Html.Kendo().DatePickerFor(x => x.HearingDateOnly)
                              .Name("HearingDateOnly")
                              .Min(DateTime.Now)
                              )

                        @(Html.Kendo().TimePickerFor(x => x.HearingTime)
                            .Name("HearingTime")
                            .Min(new DateTime(2010,1,1,8, 0, 0))
                            .Max(new DateTime(2010,1,1, 16, 0, 0))                                
                        )

注: HearingDate はビューに表示されません。私はこれを舞台裏で使用して、他の 2 つを結合します。最小値と最大値は 2010 年 (任意) の日時ですが、剣道で使用されるのは時間部分のみです。TimeSpan がありましたが、問題があったため削除しました。Kendo の検証メッセージで「HearingTime は有効な日付ではありません」という醜いメッセージが表示されるのを防ぐには、Display 属性が必要です。

4

1 に答える 1

1

https://stackoverflow.com/a/14501173/3250365を参照してください。 DateTimePickerの時間範囲は制限できないため、これを回避するには、 とは別の を用意しTimePickerますDatePicker。これには他の欠点がありますが、次のことができます。

var t = $("#time-picker").kendoTimePicker().data("kendoTimePicker");

t.min("8:00 AM");
t.max("4:00 PM");
于 2015-07-30T00:09:50.457 に答える