2013-07-26 69 views
0

代碼有效,但我想動態更改圖表類型。我嘗試在函數WeightLine中更改圖表類型,但它不起作用。它更改了SeriesDefault類型,我在警報中看到新的圖表類型,但沒有繪製新的圖表類型。Kendo更改系列默認圖表類型動態

var mydata=[{"date":"2013-03-06","data":2916,"name":"weight"},{"date":"2013-03-05","data":3708,"name":"weight"}]; 
      function getFilter(xMin, xMax) {  
    return [{ 
     field: "date", 
     operator: "gt", 
     value: xMin 
     }, { 
     field: "date", 
     operator: "lt", 
     value: xMax 
    }]; 
} 
      $("#line_chart_weight").kendoChart({ 
        title: { 
         text: "weight" 
        }, 
        dataSource:{ 
    data: mydata, 
    group: { 
        field: "name" 
       }, 

       sort: { 
        field: "date", 
        dir: "asc" 
       }, 

       schema: { 
        model: { 
         fields: { 
          date: { 
           type: "date" 
          } 
         } 
        } 
       } 
}, 
        seriesDefaults: { 
         type: "scatterLine" 
        }, 
        series: [{ 
         xField:"date", 
         yField: "data" 


        }], 
        yAxis: { 
         labels: { 
          format: "{0}" 


         }, 
          title: { 
    text: "KG", 
    padding: { 
    left: 20 
    }} 
        }, xAxis: { 
         labels: 
        { 
        rotation: -90, 
        format:"dd-MM-yyyy" 
        }, 
        title: { 
    text: "Date", 
    padding: { 
    top: 20 
    }}, 
    type:"date", 
    name:"CategoryAxis" 
        }, 

         tooltip: { 
    visible: true, 
    format:"dd-MM-yyyy", 
    color:"white" 
}, 
transitions: false, 
drag: onDragw, 
    zoom: onDragw 
       }); 

       var weight=$("#line_chart_weight").data("kendoChart"); 
       function onDragw(e) { 

     var ds = weight.dataSource; 
     var options = weight.options; 
      e.originalEvent.preventDefault(); 
     var categoryRange = e.axisRanges.CategoryAxis; 
     if (categoryRange) { 
      var xMin = categoryRange.min; 
      var xMax = categoryRange.max;  
      options.categoryAxis.min = xMin; 
      options.categoryAxis.max = xMax;  
      ds.filter(getFilter(xMin, xMax)); 
      weight.redraw();  
     } 

    } 
function WeightLine(WeightTypeString){ weight.options.seriesDefaults.type=WeightTypeString;alert(weight.options.seriesDefaults.type); weight.redraw();}      

回答

0

這有點奇怪,但我寫了一些東西來解決這個問題。他們都爲我工作。您可以修改它們以獲取您的代碼。

1.

var chart = $("#chartId").data("kendoChart"); 
chart.setOptions({ seriesDefaults: {type : "radarColumn"} }); 
chart.dataSource.read(); 
chart.refresh(); 

2.

var chart = $("#chartId").data("kendoChart"); 
for(i = 0; i< chart.options.series.length;i++){ 
    chart.options.series[i].type = "radarColumn"; 
} 
chart.refresh();