Kendo Scheduler RecurrenceEditorFor将“开始”设置为所选日期

Kendo Scheduler RecurrenceEditorFor set Start to selected Date

本文关键字:设置 日期 开始 Scheduler RecurrenceEditorFor Kendo      更新时间:2023-09-26

我为Scheduler制作了一个CustomEditorTemplate。有一件事并没有如预期的那样奏效。

对于RecurrenceEditorFor,它有一个结束日期,您可以在其中选择日期。但对于我们的RecurrenceEditorFor,它已自动将"开始"设置为当前日期,而不是计划程序的选定日期。

我们的RecurrenceEditorFor看起来像:

<div data-container-for="recurrenceRule" class="k-edit-field">
      @(Html.Kendo().RecurrenceEditorFor(model => model.RecurrenceRule).Messages(m => SchedulerHelper.MessageLocaliztion(this, m))
      .HtmlAttributes(new { data_bind = "value:recurrenceRule" })
      )
</div>

我当然可以把开始时间定在一个特定的日期,

<div data-container-for="recurrenceRule" class="k-edit-field">
      @(Html.Kendo().RecurrenceEditorFor(model => model.RecurrenceRule).Messages(m => SchedulerHelper.MessageLocaliztion(this, m))
      .HtmlAttributes(new { data_bind = "value:recurrenceRule" })
      .Start(new DateTime(2014,8,4))
      )
</div>

,但如果我选择在此日期之前的日期,这将不起作用。

即使我在当前日期之后选择了一个日期,它也会给我这个日期。因此,这并不是因为当前日期是最小值,而是它必须是一个静态日期,设置在某个地方,或者以某种方式。

我也尝试过用一些JavaScript设置输入字段中的文本,但这将无法在当前日期之前选择日期。这也会打乱递归规则。

在我们添加了CustomEditorTemplate之后,我可以看到它是标准的,但对我们来说不是。我们是错过了什么,还是做错了什么?

我找到了一个解决方案:

我在Recurrenceulediv上添加了一个点击方法:

$("div[name='RecurrenceRule']").on("click", function () {
    window.changerecurrenceStart();
 });

方法changerecurrenceStart:

  function changerecurrenceStart()
{
    var date = $("#startDate").data("kendoDatePicker")._value;
        $("#RecurrenceRule").data("kendoRecurrenceEditor").options.start = date;
        $("#RecurrenceRule").data("kendoRecurrenceEditor").options.value = date;        
}

这对我来说效果很好。