function loadMore(){ var record = Ext.data.Record.create([ {name:'code',type:'string',mapping:'0'}, {name:'desc',type:'string',mapping:'1'} ]); var newRecord = new record({code:'全部',desc:'全部'}); var DataGrid = Ext.getCmp('gridPanel'); // store添加最新内容 DataGrid.getStore().add( newRecord ); }
尝试改造成,下面的结构:
function loadMore(){
var cc = [{OpenId:123456,RoleName:'小郑',age:23},{OpenId:654321,RoleName:'小欣',age:21}]
var DataGrid = Ext.getCmp('gridPanel');
// store添加最新内容
DataGrid.getStore().add(
cc
);
}
2、进一步思考,其实newRecord = new record({code:'全部',desc:'全部'});这句代码,说白了,只要我能获取到一个数据对象,将数据对象传给Ext.data.Record,不就可以了。而我们数据可以通过Ext.ajax的方式获取,恍然大悟,觉得之前想法太笨了。
四、代码编写
1、尝试改造成,下面的结构: ~~ 静态结构
function loadMore(){
var cc = [{OpenId:123456,RoleName:'小郑',age:23},{OpenId:654321,RoleName:'小欣',age:21}]
var DataGrid = Ext.getCmp('gridPanel');
// store添加最新内容
DataGrid.getStore().add(
cc
);
}
点击触发函数之后,发现也可以追加。证明自己的思路完成没有问题。
2、编写后台代码:
@RequestMapping("/test")
@ResponseBody
public BusiResult test() {
List<Map<String,String>> lists = new ArrayList<Map<String,String>>();
BusiResult busiResult = new BusiResult(BusiStatus.SUCCESS);
Map<String,String> map = new HashMap<String, String>();
map.put("OpenId","123456");
map.put("RoleName","小郑");
map.put("age","23");
Map<String,String> map1 = new HashMap<String, String>();
map1.put("OpenId","654321");
map1.put("RoleName","小欣");
map1.put("age","21");
lists.add(map);
lists.add(map1);
busiResult.setData(lists);
return busiResult;
}
3、改造前端代码 ~~ 动态结构
function loadMore(){
// 同步请求
Ext.Ajax.request({
url: '/game/chat/go',
method: 'post',
// async: false,
params : {
scrollId: scrollId
},
success: function (action, options) {
var result = Ext.decode(action.responseText);
if (result.code != 0) {
Ext.Msg.alert('提示', result.message);
console.log("日志服耗时: " + result.extra);
} else {
var hitss = result.data;
var DataGrid = Ext.getCmp('gridPanel');
// store添加最新内容
DataGrid.getStore().add(
hitss
);
}
},
failure: function (action, options) {
Ext.MessageBox.hide();
Ext.Msg.alert('提示', '请求后台失败');
}
});
}