2014-02-17 6 views
1

Я прошел предыдущие сообщения того же вопроса, и никто из них не смог решить мою проблему. У меня есть панель сетки с определенным столбцом как скрытая. Мне нужно показать этот столбец, когда изменяется список combobox.как показать/скрыть столбец в панели решетки extjs 3.4

Вот мой код

Store1 = new Ext.data.JsonStore({ 
url: 'url', 
root: 'rows', 
autoLoad: true, 
fields: ['field1', 'field2'] 
}); 

      Grid1 = 
       { 
        xtype: 'grid', 
        id: 'grid1', 
        autoHeight: true, 
        autoWidth: true, 
        autoScroll: true, 
        border: false, 
        trackMouseOver: false, 
        frame: true, 
        store: Store1, 
        columns: [ 
         { header: 'Col1', dataIndex: 'field1'}, 
         { header: 'Col2', dataIndex: 'field2', 
          renderer: function (value, metaData, record, rowIndex, colIndex, store) { 

           if (isShow==true) { 
            value = 100; 
           } 
           else { 
            hideCols(Ext.getCmp('grid1')); 
           } 
           return value; 
          }} 
        ]}; 



       xtype: 'combo', 
       store: comboStore, 
       fieldLabel: 'title', 
       displayField: 'title', 
       valueField: 'title', 
       typeAhead: false, 
       editable: false, 
       allowBlank: false, 
       mode: 'local', 
       forceSelection: true, 
       triggerAction: 'all', 
       name: 'combo1', 
       selectOnFocus: true 
       , onSelect: function (cmb) { 
        isShow = true; 
        showCols(Ext.getCmp('grid1')); 
       } 

// methods 
hideCols = function (grid) { 
grid.getColumnModel().setHidden(grid.getColumnModel().findColumnIndex('filed2'), true); 
}; 
showCols = function (grid) {    grid.getColumnModel().setHidden(grid.getColumnModel().findColumnIndex('filed2'), false); 
}; 

Где я пошло не так?

ответ

0

опечатка в слове "filed2": grid.getColumnModel().findColumnIndex('filed2')

Некоторые Рекомендации:

  • Если вы не хотите показать столбец в запуске, столбец свойство hidden:true. Не меняйте видимость в рендерере, он имеет низкую производительность.

В столбце конфигурации будет:

{ 
header: 'Col2', 
dataIndex: 'field2', 
hidden: true, 
renderer: function (value, metaData, record, rowIndex, colIndex, store) { 
    return 100; 
} 
} 
  • Dont использовать onSelect собственность, это частный метод.

Использование события Подписка на новости:

name: 'combo1', 
selectOnFocus: true, 
listeners: { 
    select: function(cmb){ 
     showCols(Ext.getCmp('grid1')); 
    } 
} 
Смежные вопросы