1、拿取grid的store
var store = obj.up("form").nextSibling("gridpanel").getStore();
2、拿取新增记录和修改记录
var addRecords = store.getNewRecords();
var updateRecords = store.getUpdateRecords();
3、将记录变成数组形式
var addRecordArr=new Array();
//新添加的数据
for(var i=0;i<addRecords.length;i++){
ddRecordArr.push(addRecords[i].getData());
}
var updateRecordArr=new Array();
//修改的数据
for(var i=0;i<updateRecords.length;i++){
updateRecordArr.push(updateRecords[i].getData());
}
4、将数组转化为json字符串
var newJsonStr=Ext.encode(addRecordArr);
var updateJsonStr=Ext.encode(updateRecordArr);
5、然后将上述字符ajax请求发送到后台
Ext.Ajax.request({
url:"test/test.do",
params:{
newJsonStr:newJsonStr,
updateJsonStr:updateJsonStr
},
method:"post",
dataType:"text",
success:function(data){
alert(data.responseText);
store.load();
}
});
6、后台接收json字符串以后,将其转换为List.
List<ProBasePage> newList = GsonUtil.parseJsonArrayWithGson(newJsonStr, ProBasePage.class);
7、GsonUtil的代码
// 将Json数据解析成相应的映射对象
public static <T> T parseJsonWithGson(String jsonData, Class<T> type) {
Gson gson = new Gson();
T result = gson.fromJson(jsonData, type);
return result;
}
// 将Json数组解析成相应的映射对象列表
public static <T> List<T> parseJsonArrayWithGson(String json,
Class<T> clazz) {
Type type = new TypeToken<ArrayList<JsonObject>>(){}.getType();
ArrayList<JsonObject> jsonObjects = new Gson().fromJson(json, type);
ArrayList<T> arrayList = new ArrayList<T>();
for (JsonObject jsonObject : jsonObjects)
{
arrayList.add(new Gson().fromJson(jsonObject, clazz));
}
return arrayList;
}
以上就是简单的前后台数据交互,个人人为这种方式挺简单的,同时区分了新增数据和修改数据。如果有更好的方法,请留言赐教。

本文介绍如何使用ExtJS获取新增和修改的记录,并通过Ajax发送这些数据到后端。后端使用Gson将接收到的JSON字符串转换为List对象进行处理。
1368

被折叠的 条评论
为什么被折叠?



