2011-08-01 6 views
4

いくつかの列が非表示になっているExtJSパネルがあります。ExtJS列のCSSをレンダリングした後に変更する

列が非表示に設定されているかどうかによって、これらの列のCSSを変更できますか?これは可能ですか?私は前にこれを試してみて、これをやったことがない

+0

を修正するために、間違ったcells[i].addCls('myCls');を変更平均?それはグリッドの列か列レイアウトのパネルの列ですか? –

+0

@分子 - グリッド列 –

答えて

5

まず、DOMの観点から見たようなものはありません。同じクラス名を持つ細胞(div sおよびactualy td S)の束があります。

 
------------------------------------------------------------------- 
| div#gridcolumn-1018   | div#gridcolumn-1019   | 
|-----------------------------------------------------------------| 
| td.x-grid-cell-gridcolumn-1018 | td.x-grid-cell-gridcolumn-1019 | 
| td.x-grid-cell-gridcolumn-1018 | td.x-grid-cell-gridcolumn-1019 | 
| td.x-grid-cell-gridcolumn-1018 | td.x-grid-cell-gridcolumn-1019 | 
|   ...     |   ...     | 
------------------------------------------------------------------- 

だから、あなたのようなことをやっているとき:あなたはdiv#gridcolumn-1019にすべてではないにクラスを追加している

grid.columns[1].addCls('myCls'); 

他の列のセル。ですから、このような何かをしなければならない隠し列の列のすべてのセルにクラスを追加する

grid.column[1].on('hide', function(column){ 
    var id = column.getId(); // gridcolumn-1019 
    var cells = Ext.DomQuery.select('.x-grid-cell-'+id); 
    column.addCls('myCls'); 
    for (var i = 0; i < cells.length; i++) 
    Ext.fly(cells[i]).addCls('myCls'); 
} 

UPDATE:は「列」を何Ext.fly(cells[i]).addCls('myCls');

+0

ありがとうございました。私は、最後の行「cells [i] .addCls( 'myCls');」を指摘したいだけです。セル[i]はDOM要素ですが、cssに直接アクセスすることはできません –

2

:columnmodelの

使用hiddenchange : (ColumnModel this, Number columnIndex, Boolean hidden)イベント。 this.getColumnById(this.getColumnId(columnIndex))を使用して列を取得し、列のrendererプロパティにアクセスします。具体的には、からcolumncss設定オプションを確認します。

関連する問題