2014-05-02 112 views
0

我想爲ViewModel中的特定屬性的不同值使用不同的顏色。Kendo調度程序任務顏色

我的視圖模型是::

public class SchedulerViewModel : ISchedulerEvent 
{ 
    public string ScheduleID { get; set; } 
    public int? RecurrenceID { get; set; } 
    public string Title { get; set; } 
    public string Description { get; set; } 
    public DateTime Start { get; set; } 
    public DateTime End { get; set; } 
    public string RecurrenceRule { get; set; } 
    public string RecurrenceException { get; set; } 
    public bool IsAllDay { get; set; } 
    public string StartTimezone { get; set; } 
    public string EndTimezone { get; set; } 
    public int IsDismissed { get; set; } 

} 

而上查看我使用以下::

@(Html.Kendo().Scheduler<Invoice.Models.ViewModels.SchedulerViewModel>() 
     .Name("scheduler") 
     .StartTime(DateTime.UtcNow) 
     .AutoBind(true) 
     .Date(DateTime.UtcNow) 
     .Views(views => 
     { 
      views.DayView(dateformat => dateformat.SelectedDateFormat("{0:dd-MMM-yyyy}")); 
      views.WeekView(weekview => weekview.Selected(true)); 
      views.MonthView(); 
      views.AgendaView(); 
     }) 

     .Resources(resource => 
     { 
         resource.Add(m => m.IsDismissed) 
           .Title("Is Dismissed") 
           .DataValueField("Value") 
           .DataColorField("Color") 
           .BindTo(new[] { 
           new { Value = 1, Color = "#f8a398" } ,   //red 
           new {Value = 0, Color = "#51a0ed" }    //Blue 
          }); 
     }) 

     .DataSource(d => d 
      .Batch(false) 
      .Model(m => 
      { 
       m.Id(f => f.ScheduleID); 
       m.Field(f => f.Title).DefaultValue("No title"); 
       m.Field(f => f.IsDismissed).DefaultValue(0); 
       m.Field(f => f.Start).DefaultValue(DateTime.UtcNow); 
       m.Field(f => f.End).DefaultValue(DateTime.UtcNow); 
      }) 
      .ServerOperation(true) 
      .Read("Calendar_ReadSchedule", "Dispatch") 
      .Create("Calendar_CreateSchedule", "Dispatch") 
      .Destroy("Calendar_DestroySchedule", "Dispatch") 
      .Update("Calendar_UpdateSchedule", "Dispatch") 

    ) 
) 

的問題是,我只得到了默認的顏色,紅色代表調度任務。 但我想要基於屬性'IsDismissed'中的值的不同顏色。

怎麼可能?

回答

0

嘗試是這樣的:

$(function() { 
    scheduler_update(); 
}); 


function scheduler_update() 
{ 
    var calendarResources = [ { "text": "Calendar ONE", "value": "mycalendar1", "color": "#9fc6e7" },{ "text": "Calendar TWO", "value": "mycalendar2", "color": "#7bd148" }]; 

    var calendarFilters = {logic: "or", filters: [ { "field": "value", "operator": "eq", "value": "mycalendar1" },{ "field": "value", "operator": "eq", "value": "mycalendar2" }]}; 

    schedulerTasks = [{"Id": "task1","Title": "Task 1","Description": null,"CalendarId": "mycalendar1","StartDate": "2014-03-19 08:00","EndDate": "2014-03-19 09:00","IsAllDay": false}, 
        {"Id": "task2","Title": "Task 2","Description": null,"CalendarId": "mycalendar2","StartDate": "2014-03-19 10:00","EndDate": "2014-03-19 11:00","IsAllDay": false}]; 
    var schedulerControl = $("#scheduler").data("kendoScheduler"); 
    schedulerControl.resources[0].dataSource.data(calendarResources); 
    schedulerControl.resources[0].dataSource.filter(calendarFilters); 
    schedulerDataSource.read(); 
    schedulerControl.view(schedulerControl.view().name); 
} 

Demo

0

也許您選擇綁定不korrekt,因此所有事件獲得默認值

活動添加到調度: ... .Events(events => events .DataBound(「scheduler_dataBound」)) ... and function in javascript: function scheduler_dataBound(e){ scheduler._data.forEach(function(name){console.log(「id」+ name.id +「uid」+ name.uid)});

在您選擇的情況下 scheduler._data.forEach(函數(名稱

} ... ){執行console.log( 「isDis」 + name.IsDismissed)

調試事件瑪貝這可以幫助ü以檢測錯誤。

0

可以使用EventTemplate屬性來影響你對事件的背景。

@(Html.Kendo().Scheduler<Invoice.Models.ViewModels.SchedulerViewModel>() 
     .Name("scheduler") 
     .StartTime(DateTime.UtcNow) 
     .AutoBind(true) 
     .EventTemplate("<div style= 'background-color:(#= IsDismissed #);'>" + 
         "<h3>#= title #</h3>" + 
        "</div>")