我做的是嵌套表格,url返回的数据如下:
{'totalSize':7,'list':[{'id':1,'lbmc':'袋牌打印机 ','lbdh':'dpdyj','sbpartid':1,'pj':[[5,'md','棉垫',1],[9,'sd','色带',1], [10,'dyx','电源线',1]]},{'id':2,'lbmc':'针式打印机 ','lbdh':'zsdyj','sbpartid':1,'pj':[[4,'bpdl','扁平电缆',2]]}, {'id':3,'lbmc':'针式打印机','lbdh':'zsdyj','sbpartid':5,'pj':[[2,'cl','齿轮 ',3]]},{'id':4,'lbmc':'电机','lbdh':'dj','sbpartid':5,'pj':[[6,'dj','电机 ',4]]},{'id':5,'lbmc':'工具类','lbdh':'gjl','sbpartid':1,'pj':[]}]}
 recordtype怎么设置才能读到?(开始我是让url返回数组读取很正常,但我为了分页读取记录总数改成了json,不知怎么读取每条记录最后数组?)。目前只有第一级有数据第二级grid没有数据。var expander = new Ext.grid.RowExpander({
        tpl : new Ext.XTemplate('<div class="detailData">', '', '</div>')
        });
expander.on("expand",function(expander,r,body,rowIndex){
  //查找 grid
  window.testEle=body;
  //alert(body.id);
  if (Ext.DomQuery.select("div.x-panel-bwrap",body).length==0){
     //alert("a");
     var data=r.json[4];
     var store=new Ext.data.SimpleStore({
//           fields: ["class","degrade"]
           fields: ["id","pjjc","pjmc","sslb"]
           ,data:data
         });
     var cm = new Ext.grid.ColumnModel([
//      {header: "科目",dataIndex: 'class',width: 130,hideable:false,sortable:false,resizable:true}
         {header: "序号",dataIndex: 'id',width: 130,hideable:false,sortable:false,resizable:true}
      ,{header: "配件简称",dataIndex: 'pjjc',width: 130,hideable:false,sortable:false,resizable:true}
      ,{header: "配件名称",dataIndex: 'pjmc',width: 130,hideable:false,sortable:false,resizable:true}
      ,{header: "所属类别",dataIndex: 'sslb',width: 130,hideable:false,sortable:false,resizable:true}
      ]);
      Ext.DomQuery.select("div.detailData")[0];
  var gridChild = new Ext.grid.GridPanel(
  {
    store:store,
    cm:cm,
    renderTo:Ext.DomQuery.select("div.detailData",body)[0],
    autoWidth:true,
    autoHeight:true
    }
  );
 
  }
});thisServlet="tbrz.myaction";    
var StudentGridPanel = function() {
// var stuWindow = new StudentWindow();
var _grid = this;
var recordTypeT = Ext.data.Record.create([{/**$$$$$ */
name : 'id',
type : 'int',
mapping : 'id'
},  {
name : 'lbmc',
type : 'string',
mapping : 'lbmc'
}, {
name : 'lbdh',
type : 'string',
mapping : 'lbdh'
}, {
name : 'sbpartid',
type : 'int',
mapping : 'sbpartid'
}, {
name : 'pj',
// type : 'array',
mapping : 'pj'
}]);
this.store = new Ext.data.Store( {
proxy : new Ext.data.HttpProxy( {
url : thisServlet + '?method=list'
}), // set up the JsonReader
reader : new Ext.data.JsonReader( {
root : 'list',
totalProperty : 'totalSize',
id : 'id'
}, recordTypeT)
});
this.store.load({params:{start:0,limit:pagesize}});
// this.store.load();
var sm = new Ext.grid.CheckboxSelectionModel( {
singleSelect : false
});
this.columns = [
expander,//new Ext.grid.RowNumberer(),
{/**$$$$$ */
id : 'id',
header : "序号",
width : 60,
sortable : true,
dataIndex : 'id'
}, {
header : "配件类别",
width : 75,
sortable : true,
dataIndex : 'lbmc'
}, {
header : "类别名称",
width : 75,
sortable : true,
dataIndex : 'lbdh'
}, {
header : "所属部门",
width : 75,
sortable : true,
dataIndex : 'sbpartid'
}, sm];

解决方案 »

  1.   

    var expander = new Ext.grid.RowExpander({
            tpl : new Ext.XTemplate('<div class="detailData">', '', '</div>')
    //        '<div class="detailData">',
    //        '',
    //        '</div>'
    //        )
            });
    expander.on("expand",function(expander,r,body,rowIndex){
      //查找 grid
      window.testEle=body;
      //alert(body.id);
      if (Ext.DomQuery.select("div.x-panel-bwrap",body).length==0){
         //alert("a");
         var data=[
    ["数学",100],["语文",151],["英语",121],
    ];
         var store=new Ext.data.SimpleStore({
               fields: ["class","degrade"]
               ,data:data
             });
         var cm = new Ext.grid.ColumnModel([
         {header: "科目",dataIndex: 'class',width: 130,hideable:false,sortable:false,resizable:true}
         ,{header: "成绩",dataIndex: 'degrade',width: 130,hideable:false,sortable:false,resizable:true}
          ]);
          Ext.DomQuery.select("div.detailData")[0];
      var grid = new Ext.grid.GridPanel(
      {
        store:store,
        cm:cm,
        renderTo:Ext.DomQuery.select("div.detailData",body)[0],
        autoWidth:true,
        autoHeight:true
        }
      );
     
      }
    });//var sm=new Ext.grid.CheckboxSelectionModel({singleSelect:true});
        var cm = new Ext.grid.ColumnModel([
        expander
        ,{header: "姓名",dataIndex: 'name',width: 50,hideable:false,sortable:false}
        ,{header: "性别",dataIndex: 'sex',width: 130,hideable:false,sortable:false,resizable:true}
        ,{header: "年龄",dataIndex: 'age',width: 130,hideable:false,sortable:false,resizable:true}
        ]);  var grid = new Ext.grid.GridPanel(
      {
        id:'testgrid',
    //   id:'Maintenance',
    store:storeTest,
        cm:cm,
     //   renderTo:"grid1",
        width:780,
        autoHeight:false,
        height:300,
        listeners:{},
         plugins:[expander]
        }
        );