在下初学Ext 请各位帮帮忙 小弟在此谢过了~~
需求:
    一个表格grid,然后用一个下拉框控制表格每一列的显隐。

解决方案 »

  1.   

    Ext.onReady(function() {
        // Combox 定义开始
        var years = [["3", "显示所有"], ["0", "显示A列"], ["1", "显示B列"], ["2", "显示C列"]];
        var proxy = new Ext.data.MemoryProxy(years);
        var yearInfo = new Ext.data.Record.create([{
                    name : 'yId',
                    type : 'String',
                    mapping : 0
                }, {
                    name : 'yName',
                    type : 'String',
                    mapping : 1
                }]);    var reader = new Ext.data.ArrayReader({}, yearInfo);
        var store = new Ext.data.SimpleStore({
                    fields : ['yId', 'yName'],
                    data : years,
                    reader : reader,
                    autoLoad : true
                })
        var com = new Ext.form.ComboBox({
                    triggerAction : 'all',
                    emptyText : '请选择',
                    store : store,
                    displayField : 'yName',
                    hiddenNmae : 'cyear',
                    valueField : 'yId',
                    width : 150,
                    mode : 'local',
                    fieldLabel : '显隐练习',
                    value : "",
                    id : 'id',
                    listeners : {
                        // 监听select事件
                        'select' : function(com, index) {
                            var val = com.getValue();
                            var cm = Ext.getCmp('grid').getColumnModel(); // 拿到grid的cm
                            if (val == 3) {// 控制显隐部分
                                cm.setHidden(0, false);// 该方法两个参数 列index 和 是否隐藏
                                cm.setHidden(1, false);
                                cm.setHidden(2, false);
                            } else {
                                cm.setHidden(val, true);
                            }                    }
                    }
                })
        // Combox 定义结束
        // 定义大panel
        var form = new Ext.FormPanel({
                    title : "grid练习",
                    frame : true,
                    autoHeight : true,
                    applyTo : Ext.getBody(),
                    layout : "form",
                    items : [com]            })
        // grid开始
        var arr = [['a1', 'b1', 'c1'], ['a2', 'b2', 'c2'], ['a3', 'b3', 'c3']];
        var reader = new Ext.data.ArrayReader({}, [{
                            name : 'A'
                        }, {
                            name : 'B'
                        }, {
                            name : 'C'
                        }]);
        var store = new Ext.data.Store({
                    reader : reader
                });
        store.loadData(arr);
        var col = new Ext.grid.ColumnModel([{
                    header : 'A列',
                    hidden : false,
                    dataIndex : 'A'
                }, {
                    header : 'B列',
                    hidden : false,
                    dataIndex : 'B'
                }, {
                    header : 'C列',
                    hidden : false,
                    dataIndex : 'C'
                }]);    var grid = new Ext.grid.GridPanel({
                    el : Ext.getBody(),
                    height : 200,
                    width : 400,
                    id : 'grid',
                    store : store,
                    cm : col
                });    grid.render();
            // grid结束
    })