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()
});