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'
        }
    }]
}

您可以理解我的“标志”字段是一个“对象”。我的问题是:当我按“名称”分组时,它工作正常,如果我折叠某个组,它只会折叠我选择的组。但是,如果我按“符号”分组,则组格式正确并显示出来,但是当我折叠特定组时,所有组都会折叠,与之前测试的唯一区别是字段类型,“名称”是字符串和“符号”是一个对象......所以我真的不知道这是否是一个错误。我正在使用 4.2 版本。

这是一个小提琴,您可以在其中测试我的问题:https ://fiddle.sencha.com/#fiddle/vt

在这里,您可以按“获胜概率”分组,然后折叠一组,它工作正常,但如果您删除每个

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

从“数据”数组中执行相同的操作,您将看到所有组如何合并为一个。我能做些什么来解决这个问题?,我不喜欢toString()在我的商店或 JSON 中使用它。
如何按对象属性分组?

4

1 回答 1

0

您可能对模型中的“hasOne”关系而不是“auto”类型有一些运气。(我不确定是否可以使用关系进行分组)

或者您可以为分组(类型字符串或整数)创建另一个字段,如下所示:

    {
    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 回答