2

グループ化機能を備えたグリッドを実装しようとしています。これは私のモデルです:

モデル

Ext.define('myApp.model.ModelPrueba2', {
extend: 'Ext.data.Model',
fields: ['id', {
    name: 'name',
    type: 'string'
},'sign']
});

AJAX プロキシ リクエストからストアにデータを入力します。これは私のJSONです:

{
success: true,
data: [{
        id: 1,
        name: 'Name 1',
        sign: {
            id: 1,
            name: 'F1'
        }
    }, {
        id: 2,
        name: 'Name 2',
        sign: {
            id: 2,
            name: 'F2'
        }
    }]
}

私の 'sign' フィールドが 'object' であることは理解できます。私の問題は、「名前」でグループ化すると正常に機能し、一部のグループを折りたたむと、選択したグループだけが折りたたまれることです。ただし、「記号」でグループ化すると、グループは整形式で表示されますが、特定のグループを折りたたむと、すべてのグループが折りたたまれ、以前のテストとの唯一の違いはフィールド タイプである「名前」です。文字列と「記号」はオブジェクトです...だから、これがバグかどうかはよくわかりません。私は4.2バージョンを使用しています。

これは、私の問題をテストできるフィドルです: https://fiddle.sencha.com/#fiddle/vt

ここでは、「勝つ確率」でグループ化し、1 つのグループを折りたたむことができます。これは正常に機能しますが、すべて削除すると

toString: function() {
    return this.value;
}

「データ」配列から同じことを行うと、すべてのグループが 1 つに折りたたまれていることがわかります。これを修正するにはどうすればよいですか?toString()ストアまたは JSON でこれを使用したくありません。
オブジェクト属性でグループ化するにはどうすればよいですか?

4

1 に答える 1

0

モデルで「auto」タイプの代わりに「hasOne」関係を使用すると、運が良いかもしれません(関係を使用してグループ化できるかどうかはわかりません)。

または、次のようにグループ化 (string または int 型) のためだけに別のフィールドを作成することもできます。

    {
    success: true,
    data: [{
            id: 1,
            name: 'Name 1',
            myGroupField : 1,
            sign: {
                id: 1,
                name: 'F1'
            }
        }, {
            id: 2,
            name: 'Name 2',
            myGroupField : 2,
            sign: {
                id: 2,
                name: 'F2'
            }
        }]
    }

同様の解決策は、ネストされたオブジェクトから親オブジェクトにフィールドを表示することです。

{
success: true,
data: [{
        id: 1,
        name: 'Name 1',
        signId: 1,
        signName: 'F1'
    }, {
        id: 2,
        name: 'Name 2',
        signId: 2,
        signName: 'F2'
    }]
}

次に、signId でグループ化します

于 2015-10-09T12:56:34.157 に答える