2016-04-13 16 views
2

私は最初のExt JSプロジェクトに取り組んでおり、ソースデータはストアに保管されているWebサーバーからダウンロードしています。今では、さまざまなグリッドにすべてそのソースデータのバリエーションを示すようにしたいと思います。たとえば、グリッド1は1つの特定の列でグループ化されたソースデータです。グリッド2は、特定の列によってグループ化され、列X =「変数」でグループ化されます。そうである。ext jsストア(データ型の照合)

私はWPFで作業しているC#の背景から来ています。したがって、通常は観測可能なコレクションを使用し、観測可能なコレクションに対してLINQを実行して新しい観測可能なコレクションを作成し、その新しいコレクションをグリッドにバインドします。

私の質問は、EXT JSのストアでLINQタイプのクエリを実行するにはどうすればいいですか?

答えて

2

ExtJSのストアでLINQタイプのクエリを実行することができます。queryまたはqueryByメソッドを使用して、ストアからCollectionを簡単に取得できます。

グリッドはコレクションのみでは実行できないため、グリッドではこのように動作することはできません。それぞれにストアが必要です。これらのストアにLINQタイプのクエリを使用することは望ましくありません。

ExtJS6を使用している場合は、ChainedStoreを調べることができます。データストアをソースとして持つChainedStoreに各グリッドをバインドできます。それぞれのストアでsort()group()、およびaddFilter()関数を使用して、各ChainedStoreをソースおよび他のストアから独立してフィルタリング、ソート、およびグループ化することができます。

以前のバージョンを使用している場合は、複数のストアを使用して、メインストアからすべてのデータを手動でコピーする必要があります。 store.add()はコレクションではなくレコードの配列を取ります。 store.add(collection)の代わりにstore.add(collection.getRange())を使用してください。 getRange()関数は、コレクション内のすべての項目を含む配列を返します。

コメントから質問に答えるには 私はstore1から新しいストアを作成し、column1でグループ化し、column2ですべてを単純化する必要がありますか? ExtJS6で

、あなたがグループ化とグリッドの合計を表示したい場合は、それに沿って何かを次のようになります。

var store2 = Ext.create('Ext.data.ChainedStore',{ 
    source:store1, // use the data from the other store. 
    grouper:{ 
     property:'someTestField' // grouping is done inside this store. 
    } 
}); 

Ext.create('Ext.grid.Panel',{ 
    store:store2, 
    features:[{ 
     ftype:'groupingsummary' // a summary row for each group is provided by this 
    }], 
    columns:[{ 
     xtype:'numbercolumn' 
     dataIndex: 'someTestField' 
     summaryType: 'sum' // this column should have the sum in the summary row. 
    }] 
}) 

テストされていないとの保証なし。私は、各グリッドのための別々の店を持つ気にしない

var sums = {}; 
store1.getGroups().each(function(group,i) { 
    sums[i] = 0; 
    group.each(function(record) { 
     sums[i] += record.get(propertyName); 
    }); 
}); 
+0

:あなたはグリッドなしでそれをしたい場合は、単に合計を計算、それは次のように手動で行わなければなりません。私は何をしようとしている最善の方法(ベストプラクティス)を見つけることを試みているだけです。つまり、基本的に、store1から新しいストアを作成し、column1ですべてをグループ化し、column2で合計するなどの単純な処理を実行する必要がある場合はどうすればよいでしょうか? – solarissf

+0

サンプルのおかげで...私はこれを要約行を使用してすべてをグループ化すると伝えることができますから。ただし、グループ化している実際のアイテムではなく、サマリー行を表示したいだけです。私にもこれを見せてもらえますか? – solarissf

+0

これは、サマリー行を生成し、ストアを手動で移入することを意味します。または、「ピボットグリッド」を見ることができます。しかし、煎茶のプレミアムライセンスが必要です... – Alexander