asp.net mvc highchart linegraph json

Jor*_*lie 2 c# asp.net-mvc jquery highcharts

我正在尝试使用jsonresult处理这个行示例:http://www.highcharts.com/demo/line-basic/grid,但无法弄清楚如何实现这一点.

控制器代码:

public JsonResult GetLineData()
    {
        Dictionary<string, double[]> retVal = new Dictionary<string, double[]>();
        double[] Array1 = {7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6};
        retVal.Add("Tokyo", Array1);

        double[] Array2 = { -0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5 };
        retVal.Add("New York", Array2);

        return Json(retVal.ToArray(), JsonRequestBehavior.AllowGet);
    }
Run Code Online (Sandbox Code Playgroud)

我的jqquery看起来像这样:

var chart;
    $(document).ready(function () {
        var options = {
            chart: {
                renderTo: 'container',
                defaultSeriesType: 'line',
                marginRight: 130,
                marginBottom: 25
            },
            title: {
                text: 'Monthly Average Temperature',
                x: -20 //center
            },
            subtitle: {
                text: 'Source: WorldClimate.com',
                x: -20
            },
            xAxis: {
                categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },
            yAxis: {
                title: {
                    text: 'Temperature (°C)'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function () {
                    return '<b>' + this.series.name + '</b><br/>' +
           this.x + ': ' + this.y + '°C';
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'top',
                x: -10,
                y: 100,
                borderWidth: 0
            },
            series: []
        };

        //Calls the JSON            
        jQuery.getJSON("GetLineData", null, function (items) {
            var series = {
                name: '',
                data: []
            };                
            jQuery.each(items, function (itemNo, item) {
                //Get the items from the JSON and add then
                //to the data array of the series                               
                series.data.push({
                    name: item.Key,
                    data: item.Value
                })                    
            });
            options.series.push(series);

            //Create the chart
            chart = new Highcharts.Chart(options);
            chart.render();
        });


    });
Run Code Online (Sandbox Code Playgroud)

图表显示没有错误,但也没有两行.我猜这个系列没有以正确的方式建造?在此先感谢您的帮助.

Sha*_*oli 5

试试这个.我假设item.Value是一个数组,可以用作提供给图表的数据.

//Calls the JSON            
        jQuery.getJSON("GetLineData", null, function (items) {
            var series = [];                
            jQuery.each(items, function (itemNo, item) {
                //Get the items from the JSON and add then
                //to the data array of the series                               
                series.push({
                    name: item.Key,
                    data: item.Value
                })                    
            });
            options.series = series;

            //Create the chart
            chart = new Highcharts.Chart(options);
            chart.render();
        });
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴它有效.你能接受这个答案吗? (2认同)