1

すべての列に対するフィルター オプションを使用して、ロック列グリッドを作成しました。最後の列をフィルタリングしようとすると、エラーがスローされます

hds.item(i) is null or not an object

updateColumnHeadingsで:関数(){

    var view = this.grid.getView(),
        hds, i, len, filter;
    if (view.mainHd) {
        hds = view.mainHd.select('td').removeClass(this.filterCls);
        for (i = 0, len = view.cm.config.length; i < len; i++) {
            filter = this.getFilter(view.cm.config[i].dataIndex);
            if (filter && filter.active) {
                hds.item(i).addClass(this.filterCls);
            }
        }
    }
},

.ux 部分のフィルタリングview.cm.config.length=10i=8つまりロックされた列を取得しない

(ここでは、列の数、最後から、エラーをスロー = ロックされた列の数、つまり長さの不一致)

このエラーを解決する方法

または、コーディング中に何かが足りないので、view.mainHdロックされていない列のみを取得しています.. pls help..

4

1 に答える 1

0

問題は、フィルタリングが適用されたときに考慮されなかったロックヘッダーにありました

// Over-writing the filter function to accomodate Locking grid 
    Ext.LockingFilter = Ext.extend(Ext.ux.grid.GridFilters, {
        updateColumnHeadings : function () {
            var view = this.grid.getView(),
                hds, i, len, filter, lockLen;
            if (view.lockedHd) {
                lockLen = view.lockedHd.select('td').elements.length;
                hds = view.lockedHd.select('td').removeClass(this.filterCls);
                for (i = 0, len = lockLen; i < len; i++) {
                    filter = this.getFilter(view.cm.config[i].dataIndex);
                    if (filter && filter.active) {
                        hds.item(i).addClass(this.filterCls);
                    }
                }
            }
            if (view.mainHd) {
                var mainLen = view.mainHd.select('td').elements.length;
                hds = view.mainHd.select('td').removeClass(this.filterCls);
                for (i = 0, len = mainLen; i < len; i++) {
                    filter = this.getFilter(view.cm.config[i+lockLen].dataIndex);
                    if (filter && filter.active) {
                        hds.item(i).addClass(this.filterCls);
                    }
                }
            }
        }
    });
于 2013-12-20T10:43:02.323 に答える