Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EXTJS-图表刷新,重画-如何更新图表_Javascript_Extjs_Charts - Fatal编程技术网

Javascript EXTJS-图表刷新,重画-如何更新图表

Javascript EXTJS-图表刷新,重画-如何更新图表,javascript,extjs,charts,Javascript,Extjs,Charts,所以我有一个面板内的图表。该面板包含两个选项卡。第一个选项卡包含图表。第二个选项卡包含一个小表单,我正在使用它过滤图表中的数据 我的筛选表单非常简单:它包含不同的时间段,如“7天”、“30天”等,一旦选中,它会将用户选择(使用ajax)发送到我为图表生成数据的位置 那太好了,而且。。。但是我怎么才能让图表更新?!用户可以选择他们想要的任何选项(我知道脚本正在获取数据并更改查询),但图表永远不会更改。我想我应该使用重画或刷新 我的想法是:在这里将重画/刷新添加到我的表单处理程序中,如下所示

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

我的筛选表单非常简单:它包含不同的时间段,如“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图表?我找到了答案!以下是我所做的:

这是我的一个单选按钮的处理程序(从上面)。如果选中该按钮,则我将重新加载图表的存储。我没有传递硬编码的数据,而是创建了一个名为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
是一个非常重要的部分,我没有意识到我需要它


很简单;)

我想出来了!以下是我所做的:

这是我的一个单选按钮的处理程序(从上面)。如果选中该按钮,则我将重新加载图表的存储。我没有传递硬编码的数据,而是创建了一个名为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
是一个非常重要的部分,我没有意识到我需要它

很简单;)

在extjs3.4.0上

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

在extjs3.4.0上

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