是否可以将单个记录分组到多个组中?假设我有以下代码:
Ext.onReady(function() {
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'profession'],
groupField: 'profession',
data: [
{name: 'jack johnson', profession: 'surfer'},
{name: 'dan aykroyd', profession: 'ghostbuster'},
{name: 'dwayne johnson', profession: 'actor'},
{name: 'chino moreno', profession: 'musician'}
]
});
var grid = Ext.create('Ext.grid.Panel', {
store: store,
columns: [{
text: 'Name',
dataIndex: 'name',
flex: 1
}, {
text: 'Profession',
dataIndex: 'profession',
flex: 2
}],
features: [{ftype: 'grouping'}],
height: 400,
width: 400,
renderTo: Ext.getBody()
});
});
不要过多地阅读这些专业,因为这是一个玩具的例子,但是我想说我想把Dan Aykroyd分成两组......“ghostbuster”和“musician”。但是,我没有在网上看到任何这样的例子,所以我想知道是否可以做到。似乎可以这样做,因为我假设过滤器应用于商店,所以它应该是可能的,但我知道这是错误的。
如果有人有任何见解,那就太棒了!感谢。
** Cross Sencha forums发布。
答案 0 :(得分:0)
最简单的方法是通过在加载时克隆某些记录,更改组属性字段的值并将它们插入到商店中来“伪造”它。因此,在您的示例中,您有两条记录name === "Dan Aykroyd"
,但其中一条记录为profession === "ghostbuster"
,另一条记录为profession === "musician"
。您需要手动同步重复记录之间的所有更改。稍微麻烦,但它会完成工作。
实际上修改网格分组的工作方式以支持多个值?那是另一个故事。在商店方面,石斑鱼的工作方式与分拣机非常相似。要更改分组的工作方式,您必须在2-5个类之间进行扩展。可能,但可能比它的价值更多的努力。
您需要一种方法来表示记录中的多个值。我建议使用分隔字符串,因为使用数组需要更多的工作来实现。与记录值的比较将成为对Ext.Array.contains(record.get(group.property).split(","), group.name)
等的调用。如果您希望网格也是不可分组的,您可能需要在网格列上使用自定义渲染器。如果该列是可编辑的,那么您可能需要特殊的逻辑。
希望能帮助您找到解决方案。