每写一篇文章都是一部血泪史啊。最近公司的需求要是使用到Ext的动态生成Grid,公司用的是4.0,由于版本问题在网上找了很多都不实用,所以自己研究了下。
现在给大家分享出来。
后台Json:
callback内容:
1 callback : function(options, success, response) { 2 alert(response.responseText); 3 var r = Ext.decode(response.responseText); 4 if ("3"==r.state) { 5 var columnModel = []; 6 var columns = []; 7 for(var i=0;i<r.responseResult.columnList.length;i++){//因为后台返回的类型为字符串,要将字符串转换成Object 8 var v = r.responseResult.columnList[i]; 9 var obj = new Object(); 10 obj = {text:v,dataIndex:v,width:120}; 11 columnModel[i]=obj; 12 columns[i] = v; 13 } 14 15 var datas = []; 16 for(var i=0;i<r.responseResult.dataList.length;i++){//转换成Object 17 var v = r.responseResult.dataList[i]; 18 var sp = v.split(","); 19 var objData = new Object(); 20 for(var j=0;j<sp.length;j++){ 21 var columnName = sp[j].substring(0,sp[j].indexOf(":")); 22 var columnData = sp[j].substring(sp[j].indexOf(":")+1,sp[j].length); 23 objData[columnName] = columnData; 24 } 25 datas[i]=objData; 26 } 27 var store = Ext.create(‘Ext.data.Store‘, { 28 fields : columns, 29 data:datas 30 }); 31 //注意columns和columnModel必须为数组形式的Object,如果是数组形式的字符串会报错! 32 Ext.getCmp("syDataSourceGird").reconfigure(store,columnModel); 33 return ; 34 } 35 Ext.create(‘global.RespWin‘, {stateOkText : r.msg}).stateError(); 36 }