Json 使用远程数据(Javascript)更新Kendo UI调度程序数据源

Json 使用远程数据(Javascript)更新Kendo UI调度程序数据源,json,kendo-ui,datasource,scheduler,Json,Kendo Ui,Datasource,Scheduler,我有一些问题与剑道ui调度程序组件 我正在通过php exchange web服务从ms exchange获取调度程序事件。由于性能原因,我不想在calendar init上加载数千个元素 因此,默认情况下,我只加载当前的周项目。在导航事件上,我想更新schedulers数据源 我的代码是: $("#scheduler").kendoScheduler({ date: new Date(y+"/"+m+"/"+d), dateHeaderTemplate: kendo.templ

我有一些问题与剑道ui调度程序组件

我正在通过php exchange web服务从ms exchange获取调度程序事件。由于性能原因,我不想在calendar init上加载数千个元素

因此,默认情况下,我只加载当前的周项目。在导航事件上,我想更新schedulers数据源

我的代码是:

$("#scheduler").kendoScheduler({
    date: new Date(y+"/"+m+"/"+d),
    dateHeaderTemplate: kendo.template("<strong>#=kendo.toString(date, 'ddd, dd.MM.')#</strong>"),
    startTime: new Date(y+"/"+m+"/"+d+" 00:00 AM"),
    workDayStart: new Date(y+"/"+m+"/"+d+" 07:00 AM"),
    workDayEnd: new Date(y+"/"+m+"/"+d+" 8:00 PM"),
    height: 600,
    navigate: schedulerNavigate,
    views: [
        "day",
        "week",
        { type: "workWeek", selected: true },
        "month",
        "agenda"
    ],
    dataSource: {
        batch: true,
        transport: {
            read: {
                url: myDataUrl,
                dataType: "json"
            }
        }
    }
    ...and some more options here...
});
当输入schedulerNavigate函数时,将调用数据源url,并返回json。到目前为止一切都很好。。。 但是:Url将被调用两次!调度程序的数据将被清除,但不会设置新数据

有什么想法吗

非常感谢


Philip

要实现所需的行为,应启用计划程序的“服务器过滤”选项,并使用数据源“transport.parameterMap”功能将当前视图开始/结束时间包含到请求中:

dataSource: {
serverFiltering: true,
transport: {

    parameterMap: function (options, operation) {                        

        if (operation === "read") {
            var scheduler = $("#scheduler").data("kendoScheduler");

            var result = {
                start: scheduler.view().startDate(),
                end: scheduler.view().endDate()
            }

            return kendo.stringify(result);
        }

        return kendo.stringify(options);
    },
    //CRUD operations
具有MVC后端的可运行演示:


我猜
导航
事件会自动触发对小部件数据源的读取。您是否尝试过
e.preventDefault()
,设置新的数据源,然后在
schedulerNavigate
函数中手动触发
dataSource.read()
。尝试您的解决方案并添加了
e.preventDefault()到schedulerNavigate函数的第一行。我还添加了
scheduler.dataSource.read()在setDataSource命令后面。不幸的是,这没有帮助。嗨,我的回答帮助你解决问题了吗?如果是的话,你能把我的回答标记为回答吗?这样,使用谷歌查找问题的人可以更确信答案是正确的。提前谢谢。
dataSource: {
serverFiltering: true,
transport: {

    parameterMap: function (options, operation) {                        

        if (operation === "read") {
            var scheduler = $("#scheduler").data("kendoScheduler");

            var result = {
                start: scheduler.view().startDate(),
                end: scheduler.view().endDate()
            }

            return kendo.stringify(result);
        }

        return kendo.stringify(options);
    },
    //CRUD operations