剑道图表不显示数据

时间:2018-03-07 12:46:27

标签: kendo-ui kendo-asp.net-mvc

json

我通过控制器发送我的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,但图表没有显示任何内容

1 个答案:

答案 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