2016-11-14 77 views
0

我想知道如何将我在sql表上的信息获取到Kendo调度器中。我目前在服务器上有Start,End,StartTimeZone,EndTimeZone,Description,Title等等。你需要Kendo Scheduler的所有东西,但是我有很多事件需要制作并放入日历格式调度程序似乎是最好的方式来做到这一点。现在我的日历视图看起来像这样从sql server获取数据以显示在Kendo Scheduler

@(Html.Kendo().Scheduler<**censored**.Models.LeaveRequest>() 

.Name("scheduler") 
.Date(new DateTime(2013, 6, 13)) 
.StartTime(new DateTime(2013, 6, 13, 7, 00, 00)) 
.Height(600) 
.Views(views => 
{ 
    views.DayView(); 
    views.WeekView(); 
    views.MonthView(MonthView => MonthView.Selected(true)); 
}) 
.Timezone("Etc/UTC") 
.DataSource(d => d 
    .Model(m => 
    { 

     m.Id(f => f.LeaveRequestId); 
     m.Field(f => f.Title).DefaultValue("No title"); 
     m.Field(f => f.EmployeeId).DefaultValue(1); 
     m.Field(f => f.Title).DefaultValue("No title"); 
     m.RecurrenceId(f => f.LeaveRequestId); 
    }) 
    .ServerOperation(true) 
    .Read(read => read.Action("Read", "Home").Data("getAdditionalData")) 
    .Create("Create", "Home") 
    .Destroy("Destroy", "Home") 
    .Update("Update", "Home") 
) 
    ) 

    <script> 

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"); 

    //optionally add startTime/endTime of the view 
    var startTime = kendo.date.getMilliseconds(scheduler.view().startTime()); 
    var endTime = kendo.date.getMilliseconds(scheduler.view().endTime()); 
    endTime = endTime == 0 ? kendo.date.MS_PER_DAY : endTime; 

    var result = { 
     Start: new Date(startDate.getTime() - (startDate.getTimezoneOffset() * kendo.date.MS_PER_MINUTE) + startTime), 
     End: new Date(endDate.getTime() - (endDate.getTimezoneOffset() * kendo.date.MS_PER_MINUTE) + endTime) 
    } 

    return result; 
} 
    </script> 
    <style> 
     .invalid-slot { 
      background: red !important; 
      cursor: no-drop; 
     } 
    </style> 


</div> 

但我不知道我需要在控制器和模型做的,如果有的话。

回答

0

我刚刚通过将其与SQL数据库集成来完成KendoUI调度程序的实现。不过,我在我的MVC项目中使用了JavaScript API。

要载入数据,即“读取”并执行插入,更新和删除,只需从控制器返回JSON格式的模型。如果计划程序获得“知道”格式,则计划程序将为您绑定数据。

return Json(**censored**.Models.LeaveRequest, JsonRequestBehavior.AllowGet); 

几个重要的点:
1. KendoUI调度依赖于唯一的ID很多,所以如果你有比“ID”等任何东西 - 然后“做”配置它在你的调度。 在JS API中,它使用以下语法完成,其中EventID是我的SQL表的唯一ID。

schema: { 
    model: { 
     "id": "EventID", 
     "fields": { 
      "EventID": { 
       "type": "number" 
      }, 
.... 
  • 始终从您的插入,更新返回JSON数据,并从控制器删除方法。例如:

    公共JsonResult UpdateCalendarEvent(机型字符串) { ... 返回JSON(审查 .Models.LeaveRequest,JsonRequestBehavior.AllowGet); }

  • 在插入的情况下,在返回JSON对象之前,请使用最新的行ID更新ID或EventID,这样Scheduler会同步客户端的所有数据,并可以正确执行更新和删除操作。

  • 希望帮助!