ExtJS:整合存储中的记录 考虑一个简单的例子,考虑下面的记录存储: { item: 'A', group: 'red', quantity: 1 }, { item: 'A', group: 'green', quantity: 1 }, { item: 'B', group: 'red', quantity: 1 }, { item: 'B', group: 'blue', quantity: 1 }, { item: 'C', group: 'green', quantity: 1 }

ExtJS:整合存储中的记录 考虑一个简单的例子,考虑下面的记录存储: { item: 'A', group: 'red', quantity: 1 }, { item: 'A', group: 'green', quantity: 1 }, { item: 'B', group: 'red', quantity: 1 }, { item: 'B', group: 'blue', quantity: 1 }, { item: 'C', group: 'green', quantity: 1 },extjs,extjs4,Extjs,Extjs4,我的目标是建立一个网格,其中每个不同的组字段作为一个过滤器,所有活动过滤器将数量合并到唯一的项。示例: // show: red, green // show: green // show: red, blue item | quantity item | quantity item | quantity --------------- --------------- -

我的目标是建立一个网格,其中每个不同的
字段作为一个过滤器,所有活动过滤器将
数量
合并到唯一的
。示例:

// show: red, green          // show: green           // show: red, blue
item | quantity              item | quantity          item | quantity
---------------              ---------------          ---------------
 A   |   2                     A  |   1                 A  |   1
 B   |   1                     C  |   1                 B  |   2
 C   |   1
有没有一种内在的方法来处理这个问题?我的想法是:

  • 首先在
    上应用文件管理器。然后使用
    收集
    获取所有唯一的
    ,作为行的基础。对每个项目进行
    查找
    ,并将结果的数量相加
  • 重新思考我的模型,例如:

  • 想法?

    ExtJS网格有一个现成的分组视图,可能非常适合您所做的工作

    来自的设置如下所示:

    var store = Ext.create('Ext.data.Store', {
        storeId:'employeeStore',
        fields:['name', 'seniority', 'department'],
        groupField: 'department',
        data: {'employees':[
            { "name": "Michael Scott",  "seniority": 7, "department": "Management" },
            { "name": "Dwight Schrute", "seniority": 2, "department": "Sales" },
            { "name": "Jim Halpert",    "seniority": 3, "department": "Sales" },
            { "name": "Kevin Malone",   "seniority": 4, "department": "Accounting" },
            { "name": "Angela Martin",  "seniority": 5, "department": "Accounting" }
        ]},
        proxy: {
            type: 'memory',
            reader: {
                type: 'json',
                root: 'employees'
            }
        }
    });
    
    Ext.create('Ext.grid.Panel', {
        title: 'Employees',
        store: Ext.data.StoreManager.lookup('employeeStore'),
        columns: [
            { text: 'Name',     dataIndex: 'name' },
            { text: 'Seniority', dataIndex: 'seniority' }
        ],
    

    总的来说,浏览Sencha网页上的示例,它将为您提供许多关于如何设计组件及其背后代码的有用想法。

    今晚您帮了大忙。话虽如此,我看过这些文档,但我希望有一种方法可以进行分组,最终“组”合并成行原语。更接近于只在这里展示夏天:谢谢你的好话。如果开箱即用分组不合适,则可以执行以下两种操作之一。A) 创建3个过滤器以基于函数提取数据(有关过滤器,请参见网格文档),并在工具栏中添加3个触发过滤器的按钮。B) 使用网格过滤器用户扩展。这会将菜单项添加到列中。看看尺寸栏下面的这个例子:啊,是的,我见过这些。仍然-列的筛选/分组不是瓶颈;它获取这些过滤器/组的结果,并将单个组/过滤器结果中的所有记录映射到一行,而这些记录的列条目依赖于所有贡献的记录,这可能更适合服务器端功能。是的,这正是我所认为的必要条件。谢谢你的帮助
    var store = Ext.create('Ext.data.Store', {
        storeId:'employeeStore',
        fields:['name', 'seniority', 'department'],
        groupField: 'department',
        data: {'employees':[
            { "name": "Michael Scott",  "seniority": 7, "department": "Management" },
            { "name": "Dwight Schrute", "seniority": 2, "department": "Sales" },
            { "name": "Jim Halpert",    "seniority": 3, "department": "Sales" },
            { "name": "Kevin Malone",   "seniority": 4, "department": "Accounting" },
            { "name": "Angela Martin",  "seniority": 5, "department": "Accounting" }
        ]},
        proxy: {
            type: 'memory',
            reader: {
                type: 'json',
                root: 'employees'
            }
        }
    });
    
    Ext.create('Ext.grid.Panel', {
        title: 'Employees',
        store: Ext.data.StoreManager.lookup('employeeStore'),
        columns: [
            { text: 'Name',     dataIndex: 'name' },
            { text: 'Seniority', dataIndex: 'seniority' }
        ],
    
       features: [{ftype:'grouping'}],
    
        width: 200,
        height: 275,
        renderTo: Ext.getBody()
    });