格式化“数据”和“名称”高图mvc asp.net

时间:2014-02-15 21:38:37

标签: javascript asp.net-mvc asp.net-mvc-4 highcharts format

我在MVC应用程序中,我在高图中生成图表时遇到问题,我有这段代码

                   foreach (var item in query)
                {
                    object[] values = new object[3];
                    values[0] = i;
                    values[1] = Convert.ToDecimal(item.ini) ;
                    values[2] = Convert.ToDecimal(item.ir);

                    dataResult.Add(values);
                }

生成以下内容:

enter image description here

传递给json,返回给我这个图表

enter image description here

我喜欢的是“IRI201308NF3”的值是该系列的名称,其他两个值是gerarariam正确的图表。

在Json下

 $.getJSON("/GrafLev/GetDadosByGraficos", { parameter },
                function (data) {
                    var chart = new Highcharts.Chart({
                        chart: {
                            renderTo: 'container',
                            ignoreHiddenSeries: false
                        },
                        yAxis: {
                            title: {
                                text: 'Exchange rate'
                            },
                            plotLines: [{
                                value: limInferior,
                                color: 'green',
                                dashStyle: 'shortdash',
                                width: 2,
                                label: {
                                    text: 'Inferior'
                                }
                            }, {
                                value: limSuperior,
                                color: 'red',
                                dashStyle: 'shortdash',
                                width: 2,
                                label: {
                                    text: 'Superior'
                                }
                            }]
                        },
                        xAxis: {
                        },
                        series: [{ data: data }]
                    });
            });

我找到了example,但我无法格式化。 唯一的问题是图表是一条线。

1 个答案:

答案 0 :(得分:4)

阅读Highcharts api,它的系列参数正在查找具有namedata属性的字典数组。您正在将data属性传递给混合数组。现在,您可以在javascript中重新格式化响应JSON,但我认为在C#中正确格式化JSON更简洁:

Dictionary<string, object> dataResult = new Dictionary<string, object>();
dataResult["data"] = new List<object[]>();
dataResult["name"] = i;
foreach (var item in query)
{
    object[] values = new object[2];
    values[0] = Convert.ToDecimal(item.ini) ;
    values[1] = Convert.ToDecimal(item.ir);
    ((List<object[]>)dataResult["data"]).Add(values);
}

这将导致JSON看起来像这样:

{"data":[[0,0],[1,10],[2,20],[3,30],[4,40],[5,50],[6,60],[7,70],[8,80],[9,90]],"name":"Hi Mom"}

现在你应该把它传递给series参数:

series: [ data ]

注意,这个JSON仍然会返回一个系列。如果你需要返回多个系列,只需注释,我就会修改代码。

<强> EDITS

对于多个系列,添加包含每个系列Dictionary<string, object>的外部列表。

以下是一个例子:

List<Dictionary<string, object>> dataResult = new List<Dictionary<string, object>>();
for (int i = 1; i <= 2; i++)
{
    Dictionary<string, object> aSeries = new Dictionary<string, object>();
    aSeries["data"] = new List<object[]>();
    aSeries["name"] = "Series " + i.ToString();

    for (int j = 0; j < 10; j++)
    {
        object[] values = new object[2];
        values[0] = j;
        values[1] = j * 10 * i;
        ((List<object[]>)aSeries["data"]).Add(values);
    }

    dataResult.Add(aSeries);
}

传递给Highcharts as:

series: data