0
我在Kendo UI调度程序组件中遇到了一些问题。使用远程数据(Javascript)更新Kendo UI调度程序数据源
我通过php交换web服务从ms交换中获得我的调度器事件。由于性能的原因,我不想在日历init中加载数千个元素。
因此,我只在默认情况下加载当前的周项目。在导航事件中,我想更新调度程序数据源。
我的代码是:
$("#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...
});
“Naviagte” 事件调用schedulerNavigate()函数:
function schedulerNavigate(e) {
var
scheduler = $("#scheduler").data("kendoScheduler"),
dataSourceUrl = myDataUrl+kendo.format("?view={1}&date={2:d}", e.action, e.view, e.date),
dataSource = new kendo.data.SchedulerDataSource({
transport: {
read: {
url: dataSourceUrl,
dataType: "json"
}
}
});
// set datasource
scheduler.setDataSource(dataSource);
}
当进入schedulerNavigate功能,数据源的URL被调用时,将会返回JSON。一切都很好迄今... 但是:网址将被调用两次!调度程序的数据将被清除,但不会设置新数据。
有什么想法?
非常感谢!
菲利普
我在猜测'navigate'事件会自动触发对窗口小部件的数据源的读取。您是否尝试过'e.preventDefault()',设置新的dataSource,然后在'schedulerNavigate'函数中手动触发'dataSource.read()'? – Brett
嘿布雷特。试过你的解决方案,并在调度器的第一行添加'e.preventDefault();'函数。我还在setDataSource命令后面添加了'scheduler.dataSource.read();'。不幸的是,这并没有帮助。 – Philip
嗨,我的回答是否帮助您解决问题?如果是的话,你能否将我的答复标记为答案?这样,使用Google查找问题的人可以更好地保证答案是正确的。 在此先感谢。 –