2012-04-02 13 views
0

異なるデータ型では、グリッドから一部の列を非表示にする必要があります。 私はcolumn.hide()メソッドを使用していますが、処理が遅すぎます。ExtJS4:列が隠れています。あまりにも遅い

カラムにhiddenプロパティを設定すると、メソッドがわからないため、グリッドビューがリフレッシュされます。

もし私がgrid.view.refresh()を行っても、ヘッダーはまだそこにあります。

を非表示に設定してグリッドをリフレッシュするにはどうすればいいですか:trueプロパティ?

またはその他の方法...

+0

グリッドを作成するコードを教えてもらえますか? – Amalea

+0

スタンドアールを作成しています。 Senchaのドキュメントのように。グリッドの作成中ではなく、列を非表示にしたいグリッドが作成されると、いくつかのボタン(いくつかのデータ条件があります)をクリックすると、グリッドはサーバーからその条件でロードされます。そして、私はいくつかの列を隠したい。ボタンハンドラコードからいくつかのカラムを隠したい –

+0

おそらくこの質問で提案された回答を試してみませんか? http://stackoverflow.com/questions/5680080/how-to-dynamically-show-hide-columns-in-extjs-grid – Amalea

答えて

1

私は同じ問題がありました。列の可視性とサイズを確立する必要があります。標準的な方法を使用すると、24秒(〜120列)かかります。

私のソリューション:

var grid = ...; 
for (var i = 0; i < grid.columns.length; i++) { 
    var column = grid.columns[i]; 
    column.hidden = false // or true, instead column.setVisible(bool); 
    column.width = 100 // instead column.setWidth(100); 
} 
grid.headerCt.updateLayout(); 

は、今では114ミリ秒の代わりに24秒かかります。

+0

このソリューションは、マウスで列のサイズを変更するとアーティファクトにつながることがあるので注意してください。別の方法(少し遅く〜1秒) Ext.suspendLayouts(); for(var i ....){...} Ext.resumeLayouts(true); – atott

+0

最良の方法 - グリッドの再構成方法... –

関連する問題