Kendo UI的datasource批量更新的擴展方法

kendo UI的dataSource提供了批量更新數據的方法,但是新建、更新和刪除都會觸發不同的服務。若某個業務表單的數據明細有些被修改,有些被刪除,有些數據又是新增的,並且這些數據更新必須一次性提交做事物處理,那就必須自己提交數據進行處理了,但是如何從datasource中提取這些變化的數據呢。

新增的數據:dataSource.data()返回kendo.data.Model類型的數組,每個kendo.data.Model都有一個方法isNew(),它的返回值爲1的話表示是新增數據

刪除的數據:dataSource有個屬性_destroyed,它包含了所有的刪除數據

更新的數據:dataSource.data()返回kendo.data.Model類型的數組,每個kendo.data.Model都有一個屬性dirty,它的返回值爲1的話表示數據已經被改變



var ExtDataSourceEx=kendo.data.DataSource.extend({
init: function(options){
var that = this;
kendo.data.DataSource.fn.init.call(that,options);


},
getDelta:function(){
var delta=new Array();
var that = this;
var datas=that._destroyed;
for(var i=0;i<datas.length;i++){
var newObj=JSON.parse(JSON.stringify(datas[i]));
newObj.__state__="delete";
    delta.push(newObj);
};
datas=that.data();
for(var i=0;i<datas.length;i++){
var newObj=JSON.parse(JSON.stringify(datas[i]));
if(datas[i].isNew()){
newObj._state_="new";
delta.push(newObj);
  };
if(datas[i].dirty&&!datas[i].isNew()){
newObj._state_="update";
delta.push(newObj);
  };
};
return delta;
}
     });

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章