1

バックグラウンド

カスタム レンダラーを使用した列で並べ替えようとすると、何も起こりません。並べ替えは ASC から DESC に変更されますが、データの順序は変更されません。これは、カスタム レンダラーで操作したデータを並べ替える方法が定義されていないためだと思いますが、並べ替え機能または並べ替え機能を列に追加する方法が見つからないようです。

ゴール

親列で並べ替えたいグリッドを作成しています。親がその子のすぐ上に表示されるように並べ替えます (親はロールアップで、子は機能です)。

考え

機能については、親の列に親の名前を入力します。ロールアップの場合、それ自体の名前を親列に入れ、設定するクラスをそれに追加します

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 に答える