5

助けてください!ExtJs4.1グリッドパネルを使用しています。

レンダリング後にグリッドのenableColumnHideプロパティを変更する方法を探しています。いくつかの画面で同じグリッドを再利用しますが、主に一部の列を非表示にします。

それらの画面の1つでは、非表示にできない列だけが残っているので、列ヘッダーメニューからオプションを完全に削除したいのですが、他の画面の1つに到達したら元に戻します。

何か案は?

4

2 に答える 2

2

私も以前に同様の問題を抱えていました。ここで私の回避策を確認できます:

Extjsグリッドパネル-hideable=falseで列を非表示にします

基本的に、グリッドヘッダーメニューの「beforeshow」イベントに登録し、各列の「非表示」プロパティに従って、メニューの各非表示列のチェックボックス項目を非表示にしました。

「enableColumnHide」でも同じことができます(メニュー項目自体のみである「Columns」サブメニューを非表示にするだけです)

于 2012-11-15T15:49:28.183 に答える
1

それを行う明確な方法はないようですが、私はハックを見つけました-その値を変更するたびに、ヘッダーメニューを変更enableColumnHideして破棄します。headerCtコード例:

var checkbox = new Ext.form.field.Checkbox({
    renderTo: 'checkbox',
    boxLabel: 'enableColumnHide',
    checked: true,
    handler: function(sender, checked) {
        var h = grid.headerCt;
        h.enableColumnHide = checked;
        if (h.menu) {
            h.menu.destroy();
            h.menu = null;
        }
    }
});

列に非表示を使用することによっても可能です。

var checkbox = new Ext.form.field.Checkbox({
    renderTo: 'checkbox',
    boxLabel: 'enableColumnHide',
    checked: true,
    handler: function(sender, checked) {
        Ext.each(grid.columns, function(c){
            c.hideable = checked;
        });
    }
});

作業サンプルenableColumnHide: http: //jsfiddle.net/M3Aqq/5/

作業サンプルhideable: http: //jsfiddle.net/M3Aqq/9/

于 2012-11-15T15:31:48.067 に答える