c# - 使用 JQuery 循环动态地将行添加到 Google Charts

标签 c# jquery json google-visualization

我想循环遍历 C# 返回的 JSON,以动态地将行添加到 google 图表。我一次又一次地使用相同的代码,但它不会加载到图表中。

我可以看到 Json 返回到浏览器,并使用 RestClient 对其进行了测试,因此我很高兴 C# 位可以正常工作,但我不明白为什么 Json 不会加载到 Google 折线图中并创建折线。图表上显示错误无法读取 null 的属性“getTime”。我尝试了几种不同的方法来创建 data.AddRow 数组。

JQuery Ajax 调用:

$.ajax({
    url: '@Url.Action("GetJsonChartData", "ProjectCharts")',
    datatype: 'json',
    type: 'get',
    async: false,
    data: { serial: serial, uid: uid, from: from, to: to },
    contentType: 'application/json; charset=utf-8',
    success: function (d) {
        $.each(d, function (index, item) {                        
            data.addRow([new Date(item.ReadingDate), Number(item.ReadingValue), item.ToolTip]);                   
        });
    },
    error: function () {
        alert("Error loading chart data.")
    } 
});

我的 Json 看起来像:

   [{
    "ReadingDate": "2018-12-04 09:43:39",
    "ReadingValue": "17.5",
    "ToolTip": "Tue, 04 Dec 18 09:43\r\n Value: 17.5"
  },
  {
    "ReadingDate": "2018-12-04 09:45:39",
    "ReadingValue": "16.8",
    "ToolTip": "Tue, 04 Dec 18 09:45\r\n Value: 16.8"
  },
  {
    "ReadingDate": "2018-12-04 09:47:39",
    "ReadingValue": "16.1",
    "ToolTip": "Tue, 04 Dec 18 09:47\r\n Value: 16.1"
  },
  {
    "ReadingDate": "2018-12-04 09:49:39",
    "ReadingValue": "15.7",
    "ToolTip": "Tue, 04 Dec 18 09:49\r\n Value: 15.7"
  }]

我创建 Json 如下:

public JsonResult GetJsonChartData(string serial, string uid, string from, string to) {           
    var g = new GetChartData(_configuration);
    var items = g.GetChartDataFromSqlServer(serial, uid, f, t);
    return Json(JsonConvert.SerializeObject(items, Formatting.Indented));
} 

TIA

最佳答案

图表似乎绘制得很好,使用相同的数据,只是在这里硬编码......

请参阅以下工作片段...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {
  var data = new google.visualization.DataTable();
  data.addColumn({type: 'date', label: 'Date'});
  data.addColumn({type: 'number', label: 'Value'});
  data.addColumn({type: 'string', role: 'tooltip'});

  var d = [{
    "ReadingDate": "2018-12-04 09:43:39",
    "ReadingValue": "17.5",
    "ToolTip": "Tue, 04 Dec 18 09:43\r\n Value: 17.5"
  },
  {
    "ReadingDate": "2018-12-04 09:45:39",
    "ReadingValue": "16.8",
    "ToolTip": "Tue, 04 Dec 18 09:45\r\n Value: 16.8"
  },
  {
    "ReadingDate": "2018-12-04 09:47:39",
    "ReadingValue": "16.1",
    "ToolTip": "Tue, 04 Dec 18 09:47\r\n Value: 16.1"
  },
  {
    "ReadingDate": "2018-12-04 09:49:39",
    "ReadingValue": "15.7",
    "ToolTip": "Tue, 04 Dec 18 09:49\r\n Value: 15.7"
  }];

  $.each(d, function (index, item) {
    data.addRow([new Date(item.ReadingDate), Number(item.ReadingValue), item.ToolTip]);
  });

  var chart = new google.visualization.LineChart(document.getElementById('chart'));
  chart.draw(data);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart"></div>

关于c# - 使用 JQuery 循环动态地将行添加到 Google Charts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54371137/

相关文章:

c# - 将约束类型传递给方法

c# - 如何将自定义 UserControl 显示为对话框?

javascript - jQuery 颜色选择器插件实验

javascript - 在 html 文件中加载 Chosen.jquery.js 文件不起作用

javascript - 使用javascript循环遍历具有多个子对象的JSON对象

json - 如何在json对象中传递对象列表

c# - ASP.NET Core 3.0 中的 JsonOutputFormatter

c# - OData 查询中的 LIKE

javascript - JQuery 事件绑定(bind)被覆盖

c# - 实现 IEquatable 时隐藏基类方法