简体   繁体   中英

Kendo Change SeriesDefault Chart Type Dynamically

The Code works But I wanna Change Chart Type Dynamically. I tried Change Chart Type in function WeightLine However It does not work. It changes SeriesDefault type , I see new chart type in alert but does not draw new chart type.

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

it is a bit weird but i write something to solve this. both of them worked for me. You can modify them for your code.

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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM