如何从SignalR集线器方法更新Kendo调度程序? [英] How do I update a Kendo scheduler from a SignalR hub method?
问题描述
这里是使用signalr的代码,它成功地将信息发送到集线器,而集线器只是在做一个client.all.Notifiy等,等等.....我只是添加了您推荐的代码示例,我从scheduler_change(e)执行此操作,以便单击一次它将插入从集线器返回的信息..由于某种原因,新的预订未显示在调度程序上.
Here is the code using signalr, it successfully sends the information to the hub and the hub is just doing a clients.all.Notifiy etc etc..... I've just add the code sample that you recommedend, i doing this from the scheduler_change(e) so that on a single click it will insert the info that is returned from the hub.. for some reason the new booking does not show on the scheduler.
function scheduler_change(e) {
var start = e.start; //selection start date
var end = e.end; //selection end date
var slots = e.slots; //list of selected slots
var events = e.events; //list of selected Scheduler events
var notificationHub = $.connection.MyBookingHub;
notificationHub.client.Notify = function (MyStart, MyEnd, MyMessage) {
// kendoConsole.log(kendo.toString(new Date(MyStart) + " " + new Date(MyEnd) + " " + MyMessage));
var scheduler = $("#scheduler").data("kendoScheduler", function () {
scheduler.dataSource.add({
start: new Date(MyStart),
end: new Date(MyEnd),
title: "Costas Interview"
});
});
};
$.connection.hub.start().done(function () {
notificationHub.server.sendNotification(start, end, "Booking Title");
});
}
推荐答案
只应创建一次client.notify
方法,而不是每次触发调度程序小部件上的change事件时都创建一次.开始连接也是如此.
You should only create the client.notify
method once, not each time the change event on the scheduler widget is triggered. Same goes for starting the connection.
所以它应该类似于:
// set up hub methods and start connection ..
var notificationHub = $.connection.MyBookingHub;
notificationHub.client.Notify = function (MyStart, MyEnd, MyMessage) {
var scheduler = $("#scheduler").data("kendoScheduler");
scheduler.dataSource.add({
start: new Date(MyStart),
end: new Date(MyEnd),
title: "Costas Interview"
});
};
window.hubConnection = $.connection.hub.start();
// create scheduler change handler
function scheduler_change(e) {
var start = e.start; //selection start date
var end = e.end; //selection end date
var slots = e.slots; //list of selected slots
var events = e.events; //list of selected Scheduler events
window.hubConnection.done(function () {
notificationHub.server.sendNotification(start, end, "Booking Title");
});
}
这篇关于如何从SignalR集线器方法更新Kendo调度程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!