0

1 つのレコードを複数のグループにグループ化することはできますか? 次のコードがあるとします。

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

これはオモチャの例なので、あまり職業を読まないでください。しかし、ダン・エイクロイドを「ゴーストバスター」と「ミュージシャン」の 2 つのグループに分けたいとしましょう。ただ、ネット上ではこのような例が見当たらないので、できるかどうかは疑問です。ストアにフィルターが適用されていることを前提としているので、できるように見えるので、できるはずですが、間違っていることがわかっています。

誰かが洞察力を持っているなら、それは素晴らしいことです!ありがとう。

** Sencha フォーラムから投稿されたクロス。

4

1 に答える 1

0

最も簡単な方法は、読み込み時に特定のレコードを複製し、グループ プロパティ フィールドの値を変更して、それらをストアに挿入することによって「偽装」することです。したがって、あなたの例では、2 つのレコードがありますname === "Dan Aykroyd"が、1 つには がprofession === "ghostbuster"あり、もう1 つにはprofession === "musician". 重複したレコード間ですべての変更を手動で同期する必要があります。少し面倒ですが、それで仕事は完了します。

複数の値をサポートするためにグリッドのグループ化の仕組みを実際に変更しますか? それはまた別の話です。店舗側では、ハタはソーターとほとんど同じように機能します。グループ化の仕組みを変更するには、2 ~ 5 クラスに拡張する必要があります。可能ですが、おそらくそれ以上の労力が必要です。

レコードで複数の値を表す方法が必要です。配列を使用すると実装にさらに多くの作業が必要になるため、区切り文字列をお勧めします。レコード値との比較は、呼び出しExt.Array.contains(record.get(group.property).split(","), group.name)などになります。グリッドもグループ化できないようにする場合は、グリッド列にカスタム レンダラーが必要になるでしょう。その列が編集可能な場合、特別なロジックが必要になる場合があります。

解決策を見つけるのに役立つことを願っています。

于 2012-08-22T01:05:54.120 に答える