2

所以我在面板中有一个图表。该面板包含两个选项卡。第一个选项卡包含图表。第二个选项卡包含一个小表单,我用它来过滤图表中的数据。

我的过滤表单非常简单:它包含不同的时间段,例如“7 天”、“30 天”等,一旦选择,它将用户选择(使用 ajax)发送到我为图表生成数据的位置。

太好了……但是我如何让图表更新?!用户可以选择他们想要的任何选项(我知道脚本正在获取数据并更改查询),但图表永远不会改变。我想我应该使用重绘或刷新。

这就是我的想法:在此处将重绘/刷新添加到我的表单处理程序,看起来像这样

        xtype: 'radiofield',
        name: 'timespan',
        id: 'radio3',
        inputValue: 30,
        boxLabel: '30 days',
        handler: function(checkbox, checked) {
           if (checked ) {
              console.log(checkbox.inputValue);
              **HERE**
            }
        }

问题:如何更新用户操作的 EXTJS 图表?

4

2 回答 2

3

我想到了!这是我所做的:

这是我的一个单选按钮的处理程序(从上方)。如果该按钮被选中,那么我会重新加载我的图表存储。我没有传递硬编码数据,而是创建了一个名为filteredData 的函数。此函数使用 ajax 以特定格式为该图表生成数据。我将检查的值(变量名'值)作为参数发送,以便函数使用。

handler: function(checkbox, checked) {
    if (checked ) { //refreshes the chart with new data
        var chart = this.ownerCt.ownerCt.ownerCt.getComponent('dataTab').getComponent('graph');
        var chartCmp = chart.getComponent('chartCmp'); //actual chart (used to redraw)
        var value = checkbox.inputValue; //checked value


        chart.store.loadData(filteredData(value));
        chartCmp.redraw();
    }}

商店刷新后,我重新绘制图表!

store.load是一个非常重要的部分,我没有意识到我需要。

很简单;)

于 2012-09-13T18:23:08.777 回答
1

在 ExtJS 3.4.0 上,

Ext.getCmp('chartCmp').refresh();

于 2012-09-22T09:44:33.703 回答