1

欠陥を示すラリー グリッドがあります。欠陥がオープンになっている日数を示す列を追加したいと考えています。

列構成にカスタム レンダラーを追加することでそれを実行できることはわかっていますが、この列で並べ替えたいと考えています。残念ながら、レンダラーは列の並べ替えを変更しません。

代わりにストアで convert() 関数を使用して新しい仮想列 (この場合は openAgeDays) を作成できると思いますが、コンストラクターからこれを行う方法がわかりません。 storeConfig への変更?

convert 関数を使用して (これが正しい方法であると仮定して)、新しい仮想の並べ替え可能な列をラリー グリッドに追加する方法の例を誰かが持っていますか?

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