动态创建dojo图表

时间:2010-11-21 03:47:34

标签: dojo dojox.charting

您好我需要创建dojo图表,以便他们采取他们的方式 某些输入框的系列值和图表更改 因为这个概念,我继续这样做: -

  var showChart= function(){
   var thevalue=dijit.byId('myvalue').get('value');//gets thevalue from the dijit numbertextbox
   var chart1 = new dojox.charting.Chart2D("showgoals");
   chart1.addPlot("default", {type: "Lines"});
   chart1.addAxis("x");
   chart1.addAxis("y", {vertical: true});
   chart1.addSeries("Series 1", [thevalue, 2, 2, 3, 4, 5, 5, 7]);
   chart1.render();};

然后,只要值发生变化,我就会调用此函数: -

      dojo.connect(dojo.byId('myvalue'), "onchange",showChart);//whenever value changes the showChart function

被称为

html看起来像这样: -

<div dojoType="dijit.layout.ContentPane" region="center">
           <div id="showgoals" style="width: 250px; height:150px;" class="graph1"></div>

以下是更改值的文本框: -

<input id="myvalue" type="text" dojoType="dijit.form.NumberTextBox" name="myvalue"value="1000000"  required="true"
                           invalidMessage="Only Numbers allowed"/><br/><br/>

我想要的是,只要此输入框中的值发生变化, 函数showchart被调用,当前的情节是 自动更改以显示新值,但发生的情况是 我完全得到了一张新图表,看起来很自然..我会吗? 必须销毁旧图表,然后重新创建新图表,如果是这样的话 请告诉我怎么做。

1 个答案:

答案 0 :(得分:6)

showChart函数中,每次使用new dojox.charting.Chart2D("showgoals")调用函数时都会创建一个新图表。如果您要更新图表,可以致电updateSeries更新系列的数据,然后再次致电render()以更新图表。

代码可能如下所示:

var chart1 = null;
var showChart = function() {
  var thevalue=dijit.byId('myvalue').get('value');
  if (!chart1) {
     var chart1 = new dojox.charting.Chart2D("showgoals");
     chart1.addPlot("default", {type: "Lines"});
     chart1.addAxis("x");
     chart1.addAxis("y", {vertical: true});
     chart1.addSeries("Series 1", [thevalue, 2, 2, 3, 4, 5, 5, 7]);
  } 
  else {
     chart1.updateSeries("Series 1", [thevalue, 2, 2, 3, 4, 5, 5, 7]);
  }
  chart1.render();
}