考虑一个简单的例子,考虑以下记录存储:
{ 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 }
我的目标是将每个不同group
字段的网格作为过滤器,其中所有有效过滤器将quantity
合并到唯一的item
'秒。例子:
// 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
有没有内置的方法来处理这个?我的想法是:
group
上应用文件管理器。然后使用collect
将剩余的所有唯一item
作为行的基础。为每个项目执行find
并总结结果的数量。
{
item: 'A', quantities: [
{ group: 'red', quantity: 1 }, { group: 'green', quantity: 2 }
]
}
思想?
答案 0 :(得分:1)
ExtJS网格具有开箱即用的分组视图,可能非常适合您的工作。
docs的设置如下:
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()
});
一般来看,通过Sencha网页上的示例,它将为您提供有关如何设计组件及其背后代码的许多有用的想法。