1

我创建了一个锁定列网格,其中包含所有列的过滤选项。现在当我试图过滤最后一列时,它会抛出错误

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

在更新列标题:函数(){

    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它不占用锁定的列

(这里的列数,从最后开始,抛出 err= 锁定列数,即长度不匹配)

如何解决此错误

还是我在编码时遗漏了一些东西,所以view.mainHd只使用未锁定的列..请帮助..

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 回答