1

我有一个显示缺陷的拉力网格。我想添加一列,显示缺陷已打开的天数。

我知道可以通过在列配置中添加自定义渲染器来做到这一点,但我也想对此列进行排序。不幸的是,渲染器不会改变列的排序。

我想我也许可以在商店中使用 convert() 函数来创建一个新的虚拟列(在本例中为 openAgeDays),但我不确定如何从构造函数中执行此操作——我想我做了一些更改 storeConfig?

有没有人举例说明如何使用转换函数(假设这是正确的方法)将新的虚拟、可排序列添加到集会网格?

            this.grid = this.add({
                xtype: 'rallygrid',
                model: model,
                disableColumnMenus: false,
                storeConfig: [...]
4

1 回答 1

1

正如副本中的答案一样,您可以在列中添加一个 doSort:

       {dataIndex: 'Parent', name: 'Parent', 
            doSort: function(state) {
                var ds = this.up('grid').getStore();
                var field = this.getSortParam();
                console.log('field',field);
                ds.sort({
                    property: field,
                    direction: state,
                    sorterFn: function(v1, v2){
                        console.log('v1',v1);
                        console.log('v2',v2);
                        if (v1.raw.Parent) {
                            v1 = v1.raw.Parent.Name;
                        } else {
                            v1 = v1.data.Name;
                        }

                        if (v2.raw.Parent) {
                            v2 = v2.raw.Parent.Name;
                        } else {
                            v2 = v2.data.Name;
                        }

                        return v1.localeCompare(v2);
                    }
                });
            },
            renderer: function(value, meta, record) {
                var ret = record.raw.Parent;
                if (ret) {
                    return ret.Name;
                } else {
                    meta.tdCls = 'invisible';
                    return record.data.Name;
                }
            }
        },
于 2013-08-20T19:34:19.797 回答