1

背景

当我尝试按使用自定义渲染器的列进行排序时,什么也没有发生 - 它从 ASC 到 DESC 来回更改排序,但数据的顺序永远不会改变。我假设这是因为没有定义如何对我使用自定义渲染器操作的数据进行排序,但我似乎找不到向列添加排序器或排序功能的方法。

目标

我正在制作一个要按父列排序的网格。我想对其进行排序,以使父级出现在其任何子级之上(父级是汇总,子级是特征)。

主意

对于功能,将父项的名称放在父列中。对于 Rollups,将其自身的名称放在父列中,并向其中添加一个类来设置

display: none;

然后,您可以轻松地将其整理出来,让父母出现在孩子的上方

代码

{
    text: 'Parent',
    dataIndex: 'Parent',
    renderer: function(value, meta, record) {
        var ret = record.raw.Parent;
        if (ret) {
            return ret.Name;
        } else {
            meta.tdCls = 'invisible';
            return record.data.Name;
        }
    }
},
4

1 回答 1

1

对于 rallygrid 配置,请确保将 remoteSort 的属性(默认为 true)设置为 false。然后,这是该列的配置:

            {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-07-24T16:43:35.100 回答