获得修改后的Javascript数组对象:
[code]//data是Javascript Array对象
var data = DataGantt.getSource();[/code]获得创建DataGantt对象时一样的Javascript Array对象后,就可以按自己的方式去处理数据了。
[list]
[*]调整行的顺序。可能将所有的行顺序属性都进行了修改。
[*]数据关联调整。比如一个行的数据修改了,会将关联的其他行数据也联动修改。
[/list]这里将DataGantt的源数据取出来,序列化成JSON字符串后,使用Ajax保存到服务端。
[code]//获得Javascript Array对象
var data = dataGantt.getSource();
//序列化成JSON字符串
var json = Edo.util.JSON.encode(data);
//使用Ajax发送到服务端
Edo.util.Ajax.request({
url: 'savedata.jsp',
type: 'post',//post可以提交大批量数据
params: {data: json}, //发送数据
onSuccess: function(text){
alert("save success");
},
onFail: function(code){
//code是网络交互错误码,如404,500之类
alert(code);
}
});[/code]服务端只需要通过request对象即可获得提交的数据,并使用服务端JSON组件即可将JSON字符串转换为服务端对象进行处理:
[code]String json = request.getParameter("data").toString();
//将JSON字符串,一次性转换为服务端对象
List list = (List)Edo.util.JSON.decode(json);
//save to database......[/code]
[b]局部保存[/b]局部保存是指,当对数据进行增、删、改以后,只保存被改动的数据,而不保存没有被修改过的数据。
实现局部保存的要点是:获得新增、删除、修改的数据,只提交这些数据,而不提交全部的数据。
下面是如何获得局部数据的示例:
[code]var data = {
adds: dataGantt.getAdded(),
updates: dataGantt.getUpdated(),
deletes: dataGantt.getDeleted()
};
//按上面的步骤,使用AJAX和JSON提交到服务端[/code]这时候服务端需要对获得的数据做一个判断,从而做出增、删、改的不同数据库操作:
[code]String json = request.getParameter("data").toString();
List data = (List)Edo.util.JSON.decode(json);
//新增到数据库
List adds = (List)data.get("adds");
......
//从数据库删除
List deletes = (List)data.get("deletes");
......
//更新数据库
List updates = (List)data.get("updates");
......[/code]
需要注意的是,这里的服务端数据库操作,最好是事务操作,从而保持数据的完整性。