将数据从数据库绑定到dhtmlx调度程序

时间:2013-09-14 07:02:26

标签: asp.net-mvc asp.net-mvc-3 dhtmlx dhtmlx-scheduler

我在将数据加载到调度程序视图时使用dhtmlx计划和问题。 我使用databasefirst,所以我有一个sp来获取要在调度程序上显示的所有细节,

public ContentResult Data()
        {
            var data = new SchedulerAjaxData(
                new Entities().tblAppTime.Select(e => new { e.SharedId, e.StartTime, e.Duration}));
           return data;}

var数据的输出(在调试期间):

   {[{"SharedId":54,"StartTime":"09/14/2013 10:00","Duration":"09/14/2013 11:20"},{"SharedId":56,"StartTime":"09/14/2013 10:00","Duration":"09/14/2013 10:40"},
    {[{"SharedId":10,"StartTime":"09/12/2013 8:50","Duration":"09/12/2013 8:55"},{"SharedId":56,"StartTime":"09/14/2013 10:00","Duration":"09/14/2013 10:40"}]}

我仍然没有在调度程序中获得此绑定,请帮助。

更新

controller.cs
 sched.BeforeInit.Add("customeventbox()");


public ContentResult Data()
        {
         var scheduler = new DHXScheduler();
          scheduler.InitialDate=  DateTime.Today ;
            var data = new SchedulerAjaxData(new OnlineABEntities().GetAppointmentsDisplay(scheduler.InitialDate).Select(e => new {id= e.ID, e.ResourceID,start_date= e.StartTime,end_date= e.Duration, e.Color,text=""}));
            return data;
        }

schedscript.js

function customeventbox() {

    debugger;
    scheduler.attachEvent("onTemplatesReady", function () {
        alert("eventbox");
        scheduler.templates.event_header = function (start, end, ev) {
            alert("eventbox1");
                       return scheduler.templates.event_date(ev.StartTime) + "-" +
                       scheduler.templates.event_date(ev.Duration);
                   };
                   scheduler.templates.event_text = function (start, end, event) {
                       alert("eventboxtext");
                       debugger;
                       return "<br>" + event.ID + "<br>"+event.Duration +"<br>"+event.StartTime+"<br>"+event.Color+ "sampleready" + "<br>"+ "sampletext" ;
          }
         });
    }

1 个答案:

答案 0 :(得分:3)

调度程序对加载的数据有一些要求, check the article in the docs。 简而言之,输出数据必须包含至少四个以下属性,所有属性区分大小写 - id start_date end_date 文本

如果您获取此类数据,它将显示在调度程序

var data = new SchedulerAjaxData(
    new Entities().tblAppTime.Select(e => new { id = e.SharedId, start_date = e.StartTime, end_date = e.Duration, text = ""})
);

<强>更新

客户端数据对象上的

将具有与已传递给SchedulerAjaxData的对象相同的属性集。事件的开始和结束日期是JS日期对象,因此它们应在输出之前转换为字符串。

scheduler.templates.event_text = function (start, end, event) {

    var dateToStr = scheduler.date.date_to_str("%H:%i");

    return "<br>" + event.id + 
        "<br>" + dateToStr(event.end_date) +
        "<br>" + dateToStr(event.start_date) +
        "<br>" + event.Color + 
        "sampleready" + "<br>"+ "sampletext" ;
}

这里是日期格式掩码的详细信息 http://docs.dhtmlx.com/scheduler/settings_format.html