2014-10-08 3 views
1

У меня проблема с Kendo Datasource, обновление никогда не срабатывает, а изменение хорошо срабатывает с измененным объектом.Обновление не работает с источником данных Kendo

Источник данных очень прост:

collection: new kendo.data.DataSource({ 
     autoSync: false, 
     batch: true, 
     transport: { 
      read: { 
       url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignettes_Read", 
       dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests 
      }, 
      update: { 
       url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignette_Update", 
       dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests 
      }, 
      schema: { 
       model: { 
        id: "Id" 
       } 
      } 
     }, 
     change: function (e) { 

      console.log(this); 
      console.log(e); 

      //Not working too 
      //if (e.action == "itemchange") { 
      // debugger; 
      // vignettesViewModel.collection.pushUpdate(e.items[0]); 
      //} 

      $('.vignette').detach(); 
      for (var i = 0; i < vignettesViewModel.collection.data().length; i++) { 
       vignettesViewModel.createVignetteUI(vignettesViewModel.collection.data()[i]);      
      } 

      vignettesViewModel.init() 
     } 
    }) 

Для теста, AutoSync устанавливается в ложь и пакетное устанавливается в действительности.

Позже в коде, я уточняю источник данных, и я выстрелил в явной источник данных по синхронизации() методы

//Some logic up 
     var data_hospit = vignettesViewModel.getByUid($(ui.element).data('uid')); 
    //Another logic 
     data_hospit.set('date_debut', cellDepart.data('date')); 
     data_hospit.set('date_fin', cellArrivee.data('date')); 
     data_hospit.set('PrenomNomEtDateDeNaissance', 'toto'); 

     vignettesViewModel.collection.sync(); 

обновление не было произведено, но я вижу хорошо, что объект изменен пройти через функцию изменения. Итак, почему обновление никогда не срабатывает? Я хорошо определил модель с id: «Id», и если я изменю строку обновления на оповещение о фиктивной функции(), это тоже не работает. Я ве пытался «силы» обновление с pushUpdate, но я получил сообщение об ошибке «неопределенную функцию»

Спасибо за вашу помощь

ответ

1

schema не является частью transport, Вы писали:

transport: { 
     read: { 
      url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignettes_Read", 
      dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests 
     }, 
     update: { 
      url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignette_Update", 
      dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests 
     }, 
     schema: { 
      model: { 
       id: "Id" 
      } 
     } 
    }, 

и это должно быть:

transport: { 
     read: { 
      url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignettes_Read", 
      dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests 
     }, 
     update: { 
      url: "http://localhost:81/GPL/Main/Sources/GPL.Web.MVC/Vignette/Vignette_Update", 
      dataType: "json" //"jsonp" is required for cross-domain requests; use "json" for same-domain requests 
     } 
    }, 
    schema: { 
     model: { 
      id: "Id" 
     } 
    } 
+0

Вы экономите мой день :) Спасибо. –

Смежные вопросы