0

我在它下面有一个网格和一个条形图,它们都代表相同的数据(同一个商店)。网格显然可以基于单击列标题进行排序,并且图表会根据网格中显示的数据自动刷新。

麻烦的是,条形图似乎在网格的相反方向对基础存储数据进行排序。因此,例如,当网格被排序以显示...

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 从左栏到右 - 但由于其他原因,这不是此页面上的选项。)

有没有办法改变这一点,以便条形图对另一个方向进行排序?

也许商店本身可以在图表类定义中重新排序?如果是这样,那将如何完成?这会影响网格显示其数据的方式吗?

4

2 回答 2

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');
于 2013-07-18T08:18:27.737 回答
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 作为条形图的基础。它现在将以与网格中所示相同的顺序显示图表记录。

希望 Sencha 以后能在图表中添加一个简单的排序配置……

于 2013-07-27T00:59:02.397 回答