我通过控制器发送我的json数据,如下所示:我在这里编写查询只是为了防止它变得复杂和混乱:
我的控制器返回:
public JsonResult powerConverter(string regionalManager)
foreach (DataRow dt in dt_power_conv.Rows)
{
_powerConv.turbineName.Add(dt["turbine_name"].ToString());
_powerConv.duration_hrs.Add(double.Parse(dt["duration_hrs"].ToString()));
_powerConv.abb_conv.Add(dt["abb_conv"].ToString());
_powerConv.eei_conv.Add(dt["eei_conv"].ToString());
_powerConv.leit_drive_conv.Add(dt["leit_drive_conv"].ToString());
}
return Json(_powerConv, JsonRequestBehavior.AllowGet);
}
在我看来,我通过Ajax调用得到它,并简单地用我的图表绑定它:
$.ajax({
dataType: "json",
type: "POST",
url: "@Url.Action("powerConverter","Ranking")",
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "regionalManager": tmpString }),
success: function (result) {
debugger;
$("#powerChart").kendoChart({
dataSource: {
data: result
},
chartArea: {
background: "#fcfcfc",
},
series: [{
axis: "l100km",
type: "column",
// name: "DURATION",
color: "#008080",
field: "duration_hrs",
categoryField: "turbineName"
},
],
categoryAxis: {
axisCrossingValue: [0, 20],
majorGridLines: {
visible: false
},
line: {
visible: true
},
labels: {
rotation: 340
},
},
tooltip: {
visible: true,
// majorUnit:10,
template: " #= value #"
},
});
}
});
我还发布了我的json的屏幕截图,但仍然无法正常工作,我设置了categoryField和字段,其名称来自json,但图表没有显示任何内容
答案 0 :(得分:0)
看起来控制器正在返回两个数组,一个用于errorDuration,另一个用于turbineName。尝试更改控制器以返回对象数组。
您需要查看返回的json以显示
[0] = { duration: 1, turbine: "a" }
[1] = { duration: 2, turbine: "b" }
[2] = { duration: 3, turbine: "c" }
在图表中,系列的配置设置字段名称必须与完全数据元素的属性名称匹配,因此
field: "duration",
categoryField: "turbine",
<强>加强>
控制器代码似乎填充了其字段也是列表的模型类的列表。尝试更新它以返回Json以获取对象列表
为了快速,此示例显示了如何使用匿名对象。强烈建议强类型对象的健壮性和Visual Studio intellisense。您在kendo图表配置中使用的字段名称将是&#34; turbine_name&#34;和&#34; duration_hours&#34;
// This technique copied from @Paul Rouleau answer to
// https://stackoverflow.com/questions/612689/a-generic-list-of-anonymous-class
// initialize an empty list that will contain objects having two fields
var dataForJson = new List<Tuple<string, double>>()
.Select(t => new {
turbine_name = t.Item1,
duration_hours = t.Item2 }
).ToList();
// go through data table and move data into the list
foreach (DataRow row in myDataTable.Rows)
{
dataForJson.Add (new {
turbine_name = (string)row["turbine_name"],
duration_hours = (double)row["duration_hours"]
});
}
return Json(dataForJson, JsonRequestBehavior.AllowGet);
注意,如果您进行进一步研究,您会发现许多其他方法将数据表转换为Json