4

Я пытаюсь динамически изменять ресурс dataSource, но изменения, которые я делаю, не применяются к планировщику.Kendo UI Web Scheduler - изменение данных ресурсов динамически динамически

Я создал планировщик следующим образом:

$("#scheduler").kendoScheduler 
({ 
    date: new Date(), 
    startTime: new Date("2013/11/27 07:00 AM"), 
    endTime: new Date("2013/11/27 06:00 PM"), 
    height: "600", 
    selectable: true, 
    views: [ 
     "day", 
     { type: "workWeek", selected: true }, 
     "week", 
     "month", 
     "agenda" 
    ], 

    editable: { 
     template: kendo.template($("#schedulerTemplate").html()) 
    }, 
    dataSource: _dataSourceDetailedAppointmentScheduler, 
    edit: _api.onEditScheduler, 
    cancel: _api.onCancelScheduler, 
    save: _api.onSaveScheduler, 

    resources: [ 
     { 
      field: "CommertialRepresentativeId", // The field of the scheduler event which contains the resource identifier 
      title: "Representante Comercial", // The label displayed in the scheduler edit form for this resource 
      dataSource: [ 
       { 
        text: "Representante 1", // Text of the resource instance 
        value: 1, // Identifier of the resource instance, use that value to assign an event to this instance. 
        color: "#ff0000" // Used as the background of events assigned to this resource. 
       }, 
      ], 
      multiple: false // Indicate the this is a multiple instance resource 
     } 
    ] 

}); 

И после того, как другой контроль модифицируется, я пытаюсь заменить DATASOURCE ресурсы, изменяя цвет событий со значением 1 в поле: " CommertialRepresentativeId "на зеленый.

_dataSourceDetailedAppointmentScheduler.read(); 
var schedulerControl = $("#scheduler").data("kendoScheduler"); 
//Construir 
var resourceDS = new kendo.data.DataSource(
    { 
     data: [ 
      { text: "rep 1", 
       value: 1, 
       color: "#00ff00" 
      } 
     ] 
    } 

); 
resourceDS.read(); 

schedulerControl.resources[0].dataSource = resourceDS; 
schedulerControl.view(schedulerControl.view().name); 

Не может показаться, что планировщик будет продолжать отображать события в исходном цвете.

Буду признателен за помощь!

ответ

2

Вы должны использовать resource.setDatasource или resource.dataSource.data() обновить конфигурацию:

var data = [{ text: "rep 1", value: 1, color: "#00ff00" }]; 
schedulerControl.resources[0].dataSource.data(data); 

Если вы не хотите, чтобы заменить все данные, но изменить только один элемент, это должно работать:

// id if you have one, otherwise dataSource.at(index) if you know the index 
var existingItem = schedulerControl.resources[0].dataSource.get(id); 
existingItem.set("color", "#00ff00"); 
+0

я в конечном итоге делает это после удаления первоначально включены element: 'schedulerControl.resources [0] .dataSource.add ({text:" Rep 1 ", value: 1, color:" # 00ff00 "});' Это эквивалентно? –

+0

@gaguevaras, если вы хотите изменить только один элемент, который будет работать; Я также отредактировал свой ответ для другой идеи, если вы хотите сделать небольшое изменение в элементе –

0

Изменение ресурсов не будет автоматически обновлять пользовательский интерфейс. Поэтому вам нужно будет обновить его вручную. Этого можно добиться, выбрав текущий вид через метод представления планировщика.

http://docs.telerik.com/kendo-ui/api/javascript/ui/scheduler#methods-view

scheduler.view("month"); 
Смежные вопросы