2

rowexpander プラグインを含むグリッドを再構成すると、問題が発生します。プラグインを削除すると、正常に動作します。以下の修正も試しましたが、うまくいきませんでした

Ext.override(Ext.grid.plugin.RowExpander, {
     beforeReconfigure: function (grid, store, columns, oldStore, oldColumns) {              
                var expander = this.getHeaderConfig();
                expander.locked = true;
                if (columns)
                    columns.unshift(expander);
            }
        });

これはスローされたエラーです

スクリプト ブロックの行 9988、列 13 で未処理の例外

0x80070057 - Microsoft JScript ランタイム エラー: 引数が無効です。

extjs スクリプト ブロックの以下の場所からスローされました

onColumnsChanged: function(headerCt) {
    var items = this.view.el.query(this.rowBodyTdSelector),
        colspan = headerCt.getVisibleGridColumns().length,
        len = items.length,
        i;

    for (i = 0; i < len; ++i) {
        items[i].colSpan = colspan; // **the error thown location is this**
    }
},

助けてください !前もって感謝します !!

4

3 に答える 3

3
grid.suspendEvents();
grid.reconfigure (store);
grid.resumeEvents();
于 2013-08-16T11:37:54.733 に答える
0

以下のオーバーライドを使用します

 overrideRowBodyOnColumnChanged: function () {
        for (var i = 0 ; i < this.features.length; i++) {
            if (this.features[i].ftype == 'rowbody') {
                Ext.override(this.features[i], {
                    onColumnsChanged: function (headerCt) {
                        var items = this.view.el.query(this.rowBodyTdSelector),
                            colspan = headerCt.getVisibleGridColumns().length,
                            len = items.length,
                            i;
                        colspan = colspan == 0 ? 1 : colspan;
                        for (i = 0; i < len; ++i) {
                            items[i].colSpan = colspan;
                        }
                    }
                });
                break;
            }
        }
    },

そして、グリッドの initComponent 関数でこのオーバーライド関数を呼び出します

initComponent: function () {

// your code

  this.overrideRowBodyOnColumnChanged();

}
于 2014-09-03T05:20:44.497 に答える