extjs grid 自定义列 title分级

最近在做公司的一个项目,里面涉及到的是对应不同的数据,在grid显示不同的title,比如一组数据都只有name和age两个属性,那么在界面上就显示两列,如果现在一组数据有name,age,height三个属性,现在界面上也相应的显示三列。好了,意思大概懂了吧

现在主要的思路有三部

1 加载数据

2根据数据的属性设置grid的title

3把数据塞入grid中

现在直接上代码吧,下面这个方法是点击按钮后后台获取数据

1

onSearch:function(){
var form = Ext.getCmp('myform').getForm();
if(!form.isValid()){
Ext.Msg.alert("信息提示", "表单不完整!");
return;
}
var formData = form.getValues();

var _this = this;
var box = Ext.Msg.wait('正在查询...', '请稍等');
Ext.Ajax.request({
            url: g_v3.webcontext+'/workReport/search/',
            headers: {
                accept: 'application/json'
            },
            params:formData,
            method: 'GET',
            waitMsg: '正在保存信息...',
            success: function(response, opts) {
            //Ext.MessageBox.hide();
                var obj = Ext.decode(response.responseText);
                if(obj.result == 'SUCCESS') {
                if(box){box.hide();}
                Ext.getStore('dataGridStore').removeAll();
                var dataArray = obj.returnObject;
                // 1 首先生成最多的增值服务的列,前提是要获取现有数据中最多的增值服务类型
                var termData = _this.dealData(dataArray);
                termData.data; // 完整的数据
                termData.inType; // 入库增值列
                termData.outType; // 出库增值列
                termData.stockType; // 库内增值列
                // 给grid新增列标题
                _this.addGridTitle(termData.inType,termData.outType,termData.stockType)
                //  把 termData.data; 数据塞入grid中
                _this.addDataToStore(termData.data);
               
                } else {
                if(box){box.hide();}
                Ext.Msg.alert("信息提示", "查询失败,请重试~");
                Ext.getStore('dataGridStore').removeAll();
                }
            },
            failure: function(response, opts) {
                Ext.MessageBox.hide();
                Ext.Msg.show({
                    title: '提示',
                    msg: '网络连接失败',
                    buttons: Ext.Msg.OK
                });
            }
        })
},

2

addGridTitle:function(inType,outType,stockType){

var inTypeColumn = Ext.create('Ext.grid.column.Column', {  
       text: "入库增值",  
       columns:[]
   });  
var outTypeColumn = Ext.create('Ext.grid.column.Column', {  
       text: "出库增值",  
       columns:[]
   }); 
var stockTypeColumn = Ext.create('Ext.grid.column.Column', {  
       text: "库内增值",  
       columns:[]
   }); 
for(var i in inType){


inTypeColumn.insert({  
       text: i,  
       dataIndex: i,
       align:'right',
       xtype: 'gridcolumn',
   })
}
for(var out in outType){


outTypeColumn.insert({  
       text: out,  
       dataIndex: out,
       align:'right',
       xtype: 'gridcolumn',
   })
}
for(var stock in stockType){
stockTypeColumn.insert({  
       text: stock,  
       dataIndex: stock,
       align:'right',
       xtype: 'gridcolumn',
   })

}
var grid = Ext.getCmp('dataGridId');

var cc = this.initColumns(grid);
cc.push(inTypeColumn);
cc.push(outTypeColumn);
cc.push(stockTypeColumn);
grid.headerCt.removeAll();
grid.headerCt.insert(grid.columns.length, cc);


},

3

addDataToStore:function(data){
for(var i=0;i<data.length;i++){
var model = Ext.create('workReport.model.dataGridModel',data[i]);
model.data=data[i];
Ext.getStore('dataGridStore').insert(0,model);
}
},

以上就是主要的代码,以后在工作中如果遇到类似的问题,可以参考一下,其实也很简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值