2008-12-03 21:36 geniushuai
网上的例子其实都是一样的.我需要的功能是这样的.首先后台返回的json数据如下:
totalpropal:100,
column:[{chineseName:列一,name:column1},{chineseName:列二,name:column2}],
fields:[{name:column1},{namee:column2}],
root:[{column1:value1,column2:value2}]
我需要一个能够根据这些数据生成grid的功能类,我的做法是这样的:在store的load的事件中更新列.
//定于grid需要的store
var ConfigItemStore =new Ext.data.JsonStore
({
proxy:new Ext.data.HttpProxy({url:URL_Test_List}),
remoteSort: true,
totalProperty: 'totalPorperty',
root: 'root',
fields:
[
{name:'id'}//默认的fields
,{name:'columnName'}
]
});
//1.在store的load时间中更新grid的colmode(成功了)
//2.在store的load事件中更新store的fields(失败了,就是这个为什么啊)
ConfigItemStore.on('load', function(a){
//取得需要生成的列的信息和fileds的信息
Ext.Ajax.request({
url: URL_Test_List,
success: function(response,options){
var json;
var cols = new Array();
var fieldss= new Array();
alert(response.responseText);
json = Ext.util.JSON.decode(response.responseText);
myfields = json.field;
//生成列
for (var i = 0; i < json.column.length; i++) {
var _header = json.column.chineseName;
var _dataIndex = json.column.name;
cols = {
header: _header,
dataIndex: _dataIndex,
width: 200,
sortable: true
};
}
//生成fields
for (var i = 0; i < myfields.length; i++) {
var _name = myfields.name;
alert(_name);
fieldss = {
name:_name
};
}
col= new Ext.grid.ColumnModel(cols);
//更新store的fields好像没用啊,为什么啊
ConfigItemStore.fields = fieldss;
//取得grid
var com=Ext.getCmp('MyTestGrid');
if(com)
com.reconfigure(ConfigItemStore,col);//更新grid
//我这样做还是只有原来的初始化时的id和columnname。
},
failure: function(){
alert('failed');
}
});
});
Ext.my.MyTestGrid=Ext.extend(Ext.grid.Gridpanel,{
id:'MyTestGrid',
store:ConfigItemStore ,
colmodel:new Ext.data.datacolmudle({header:'',dataindex:''}),
bbar:new Ext.util.pagingtoolbar({
store:ConfigItemStore
/其他参数
})
})
var grid=new Ext.my.MyTestGrid();
第2楼