2016-02-25 19 views
1

我與KendoUI條形圖工作的點擊系列。請檢查這個fiddle。在這撥弄我設置在設計時series配置。我想在運行時對按鈕的點擊添加series到圖表。我如何添加series到劍道上的一個按鈕的點擊排行榜。Kendoui條形圖設置上的一個按鈕

當前series是在設計時分配的,我想在運行時點擊一個按鈕來做同樣的事情。

代碼:

<!DOCTYPE html> 
<html> 
<head> 
    <base href="http://demos.telerik.com/kendo-ui/bar-charts/grouped-stacked-bar"> 
    <style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style> 
    <title></title> 
    <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.1.112/styles/kendo.common-material.min.css" /> 
    <link rel="stylesheet" href="//kendo.cdn.telerik.com/2016.1.112/styles/kendo.material.min.css" /> 

    <script src="//kendo.cdn.telerik.com/2016.1.112/js/jquery.min.js"></script> 
    <script src="//kendo.cdn.telerik.com/2016.1.112/js/kendo.all.min.js"></script> 
</head> 
<body> 
<div id="example"> 
    <div class="demo-section k-content wide"> 
     <div id="chart"></div> 
    </div> 
    <script> 
     function createChart() { 
      $("#chart").kendoChart({ 
       title: { 
        text: "World population by age group and sex" 
       }, 
       legend: { 
        visible: false 
       }, 
       seriesDefaults: { 
        type: "column" 
       }, 
       series: [{ 
        name: "0-19", 
        stack: "Female", 
        data: [854622, 925844, 984930, 1044982, 1100941, 1139797, 1172929, 1184435, 1184654] 
       }, { 
        name: "20-39", 
        stack: "Female", 
        data: [490550, 555695, 627763, 718568, 810169, 883051, 942151, 1001395, 1058439] 
       }, { 
        name: "40-64", 
        stack: "Female", 
        data: [379788, 411217, 447201, 484739, 395533, 435485, 499861, 569114, 655066] 
       }, { 
        name: "65-79", 
        stack: "Female", 
        data: [97894, 113287, 128808, 137459, 152171, 170262, 191015, 210767, 226956] 
       }, { 
        name: "80+", 
        stack: "Female", 
        data: [16358, 18576, 24586, 30352, 36724, 42939, 46413, 54984, 66029] 
       }, { 
        name: "0-19", 
        stack: "Male", 
        data: [900268, 972205, 1031421, 1094547, 1155600, 1202766, 1244870, 1263637, 1268165] 
       }, { 
        name: "20-39", 
        stack: "Male", 
        data: [509133, 579487, 655494, 749511, 844496, 916479, 973694, 1036548, 1099507] 
       }, { 
        name: "40-64", 
        stack: "Male", 
        data: [364179, 401396, 440844, 479798, 390590, 430666, 495030, 564169, 646563] 
       }, { 
        name: "65-79", 
        stack: "Male", 
        data: [74208, 86516, 98956, 107352, 120614, 138868, 158387, 177078, 192156] 
       }, { 
        name: "80+", 
        stack: "Male", 
        data: [9187, 10752, 13007, 15983, 19442, 23020, 25868, 31462, 39223] 
       }], 
       seriesColors: ["#cd1533", "#d43851", "#dc5c71", "#e47f8f", "#eba1ad", 
           "#009bd7", "#26aadd", "#4db9e3", "#73c8e9", "#99d7ef"], 
       valueAxis: { 
        labels: { 
         template: "#= kendo.format('{0:N0}', value/1000) # M" 
        }, 
        line: { 
         visible: false 
        } 
       }, 
       categoryAxis: { 
        categories: [1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010], 
        majorGridLines: { 
         visible: false 
        } 
       }, 
       tooltip: { 
        visible: true, 
        template: "#= series.stack #s, age #= series.name #" 
       } 
      }); 
     } 

     $(document).ready(createChart); 
     $(document).bind("kendo:skinChange", createChart); 
    </script> 
</div> 


</body> 
</html> 
+0

您的鏈接是一個telerik頁面,而不是小提琴。另外,請包括問題中的相關代碼,所以如果小提琴消失隨着時間的推移人們仍然可以參考你的問題。 – ezanker

+0

@ezanker:完成! – SharpCoder

回答

1

如果設置圖表選項作爲一個全局變量,你可以修改options.series並將其設置爲您的更新後的系列數據源中的按鈕單擊事件,並呼籲createChart( ),它將更新(重新創建)更新系列的圖表。

創建一個全局變量chartOptions:

var chartOptions = 
{ 
    title: { 
    text: "World population by age group and sex" 
}, 
legend: { 
etc. etc. 

然後創建與存儲在可變的選項圖表:

$("#chart").kendoChart(chartOptions); 

最後,用更新的數據更新options.series和重建圖表:

click: function() 
{ 
    chartOptions.series = updatedSeries; 
    $("#chart").kendoChart(chartOptions); 
} 

我更新了你的道場,並添加一個按鈕,populat點擊一個新的系列。 http://dojo.telerik.com/oTeTi/3

4

Ageonix給了一個很好的答案!如果你不想使用全局變量的圖表選項,你可以從DOM數據屬性圖表實例,該系列添加到圖表實例,然後告訴圖表重繪:

var newseries = { 
     name: "100+", 
     stack: "Female", 
     data: [654622, 625844, 784930, 844982, 900941, 39797, 72929, 118435, 118454] 
}; 
//Get the chart 
var chart = $("#chart").data("kendoChart"); 
//add the series 
chart.options.series.push(newseries); 
//refresh the chart 
chart.redraw(); 

更新DOJO

+0

謝謝!我只能對你的答案進行投票,因爲Ageonix也給出了正確的答案。 – SharpCoder

+0

我也喜歡這個,因爲這是一個很好的選擇! – Ageonix

+0

@SharpCoder,歡迎您。 – ezanker