我在MVC应用程序中,无法在highchart中生成图表,我有这段代码
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);
}
生成以下内容:
传递给返回此图表的json
我喜欢的是``IRI201308NF3''的值是该系列的名称,而其他两个值则是正确的图表。
在杰森之下
$.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 }]
});
});
我找到了这个示例,但是我无法格式化。唯一的事情是图形是一条线。
读取Highcharts
api,它的series参数正在寻找具有name
和data
属性的字典数组。您正在向data
属性传递混合数组。现在,您可以在javascript中重新设置响应JSON的格式,但我认为将JSON正确格式化为更加干净C#
:
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仍返回单个系列。如果您需要返回多个系列,只需注释一下,然后我将修改代码。
编辑
对于多个系列,添加一个包含每个系列的外部列表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
:
series: data
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句