SDK2:在拉力赛网格中排序自定义列

时间:2013-08-20 16:42:01

标签: rally

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

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

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

有没有人有一个如何使用转换函数的例子(假设这是正确的方法)将新的虚拟可排序列添加到拉力赛网格?

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

1 个答案:

答案 0 :(得分: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;
                }
            }
        },