0

是否可以将单个记录分组到多个组中?假设我有以下代码:

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 分为两组……“捉鬼敢死队”和“音乐家”。但是,我在网上没有看到任何这样的例子,所以我想知道是否可以这样做。似乎可以做到,因为我假设过滤器已应用于商店,所以应该有可能,但我知道我错了。

如果有人有任何见解,那就太棒了!谢谢。

**从Sencha 论坛发帖。

4

1 回答 1

0

最简单的方法是通过在加载时克隆某些记录、更改组属性字段的值并将它们插入到存储中来“伪造”它。因此,在您的示例中,您将有两条记录,name === "Dan Aykroyd"但一条将拥有profession === "ghostbuster",另一条将拥有profession === "musician". 您需要手动同步重复记录之间的所有更改。有点麻烦,但它会完成工作。

实际上修改网格分组的工作方式以支持多个值?那是另一个故事。在商店方面,石斑鱼的工作方式与分拣机非常相似。要更改分组的工作方式,您必须在 2-5 个类之间进行扩展。可能,但可能比它的价值更多的努力。

您需要一种方法来表示记录中的多个值。我建议使用分隔字符串,因为使用数组需要更多的工作来实现。与记录值的比较将变成调用Ext.Array.contains(record.get(group.property).split(","), group.name)等。如果您也希望您的网格不可分组,您可能需要在网格列上使用自定义渲染器。如果该列是可编辑的,那么您可能需要特殊的逻辑。

希望能帮助您找到解决方案。

于 2012-08-22T01:05:54.120 回答