2010-11-21 3 views
1

Привет Мне нужно создать додзё диаграммы таким образом, что они принимают значения серии из определенных полей ввода и график изменения automatically.So с этой концепцией, я пошел вперед сделать это: -создание додзё диаграмм динамически

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, выглядит Тхи s: -

<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 вызывается, и текущий график автоматически изменился, чтобы показать новые значения, но то, что происходит, это , что я получаю новую диаграмму полностью, что кажется вполне естественным. Будет ли я hav e, чтобы уничтожить старый график, а затем воссоздать новый график, если так , пожалуйста, скажите мне, как.

ответ

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(); 
} 
+1

Отлично! Спасибо большое ... не знали о updateSeries – Rasmus