2013-07-15 65 views
0

我有一個網格和直接在它下面的條形圖,所有代表相同的數據(同一商店)。網格顯然是基於單擊列標題進行排序的,圖表根據網格中顯示的數據自動刷新。ExtJS 4 - 排序條形圖

問題是,條形圖似乎在網格的相反方向上排列底層存儲數據。因此,例如當電網進行排序,以顯示...

Name/Sales 
Joe/100 
Sally/80 
Tim/60 

...條形圖顯示:

[bar 1 - top]: Tim/60 
[bar 2 - mid]: Sally/80 
[bar 3 - bot]: Joe/100 

這是反直覺的用戶 - 他們期望的那種的網格和圖表保持一致。 (柱形圖表效果很好 - Joe/Sally/Tim從左列到右 - 但這不是因爲其他原因在此頁面上的選項。)

是否有方法可以更改此設置,以便條形圖將其他方向?

也許商店本身可以在圖表類定義中重新排序?如果是這樣,那將如何完成?這會影響網格如何顯示其數據?

+0

排序店:** store.sort(「場」,「ASC」); ** – mfruizs2

+0

感謝您的 - 試過了,它確實對商店進行了分類 - 但是這也影響了電網,這是一個問題。我需要一些方法來對網格DESC進行排序,但對圖表進行排序ASC – Dylan

+0

對於同一商店,也許不可能......克隆商店並對其進行分類。或者在第一家商店進行2個商店和回叫,填寫相同的響應數據並用另一個排序過濾器對第二個商店進行排序。 – mfruizs2

回答

0

感謝mfruizs2的指針 - 幫助讓我在正確的軌道上。對於任何人在未來的未來的,這裏是我做過什麼來解決這個問題:

//get the # of records in the current grid page 
var gridStoreItems = gridStore.getCount(); 

//setup a separate store just for the *chart* 
var chartStore = Ext.create('Ext.data.ArrayStore', {      
    model : gridStore.model, 
    proxy : gridStore.proxy, 
    storeId : 'chartStore', 
}); 

//loop records of current *grid* store, from bottom to top 
//and add the bottom grid store record to the top of the chart store, and so on 
for (var i=(gridStoreItems-1); i>=0; i--)        
    { 
     chartStore.add(gridStore.getAt(i).data); 
    } 

然後用chartStore作爲條形圖的基礎。它現在將按照網格中顯示的相同順序顯示圖表記錄。

這裏的希望是煎茶增加了一個簡單的排序配置,以在未來的排行榜...

1

1.將您的網格店:

gridStore.load({ 
    callback: function(records, operation, success) { 
     if(success){ 
      // Load data from first Store (grid) to second Store (chart) 
      chartStore.loadData(records); 
        // Sort chart store data: 
      chartStore.sort('field','ASC'); 
     } 
    } 
}); 

2.排序網格店:

gridStore.sort('field','DESC');