在Kendo Scheduler中使用MVC包装器

Use MVC wrapper in Kendo Scheduler

本文关键字:MVC 包装 Kendo Scheduler      更新时间:2023-09-26

我想在我的Kendo调度器的调度器中使用Kendo MVC Wrapper for Parameter Map

目前,在文档加载完成后,我正在使用ParameterMap到Javascript函数中,如下所示:

  $(document).ready(function () {
            $("#scheduler").data("kendoScheduler").dataSource.transport.parameterMap = function (options, operation) {
            var scheduler = $("#scheduler").data("kendoScheduler");
            if (operation === "read") {
                var result = {
                    start: scheduler.view().startDate().toISOString(),
                    end: scheduler.view().endDate().toISOString()
                }
                return result;
            }
        };
    })

但我想使用MVC包装器的剑道调度程序。有可能做到吗?

MVC包装器不允许您指定parameterMap,它使用了不应更改的预定义parameterMap。相反,可以考虑通过读取配置的数据功能发送额外的参数。

您可以尝试以下方式:

parameterMap: function (options, operation, data) {
                  if (operation === "read") {
                      return  models: kendo.stringify(options.models);
                 }
             }

在控制器侧

public virtual JsonResult SomeMethod([DataSourceRequest] DataSourceRequest request)
{
    /*
        Your logic goes here
    */
    return Json(returnValue.ToDataSourceResult(request));
}

上面给出的答案示例:

 Read(read => read.Action("Read", "Calendar").Data("getAdditionalData"))

以及您想要实现的Javascript函数:

function getAdditionalData() {
    var scheduler = $("#scheduler").data("kendoScheduler");
    var timezone = scheduler.options.timezone;
    var startDate = kendo.timezone.convert(scheduler.view().startDate(), timezone, "Etc/UTC");
    var endDate = kendo.timezone.convert(scheduler.view().endDate(), timezone, "Etc/UTC");
    var result = {
        Start: new Date(startDate.getTime() - (startDate.getTimezoneOffset() * kendo.date.MS_PER_MINUTE)),
        End: new Date(endDate.getTime() - (endDate.getTimezoneOffset() * kendo.date.MS_PER_MINUTE) + kendo.date.MS_PER_DAY)
    }
    return result;
}