【发布时间】:2020-11-04 11:32:06
【问题描述】:
我有一个项目需要使用 Chart.JS 显示 line-chart,基于从 Controller 加载到视图页面的 SQL 数据。
我想要一个包含多个数据集的简单折线图。数据集必须自动更新控制器数据加载。
但是,我尝试将数据从视图加载到图表,不幸的是,没有运气,仍然得到不准确的结果。
我想要的是每个TagsN 都应该有自己的行和数据。但在我目前的结果中,只显示了一行。我不知道该怎么做。
@Html.Raw(TagsC); @Html.Raw(TagsN); @Html.Raw(TagsD) 结果显示在 Excell 电子表格中。
首先我将控制器数据转换为Newtownsoft.Json.JsonConvert.SerializeObject() 以获取 JSON 格式并将其解析为图表标签和数据。
结果可能与下图不一样,但我只是想看看有什么效果。
这些是测试数据
当前代码: DisplayPage.cshtml
var TagsC = Newtonsoft.Json.JsonConvert.SerializeObject(Model._CountedList.Select(x => x.Counted).ToList());
var TagsN = Newtonsoft.Json.JsonConvert.SerializeObject(Model._NameList.Select(x => x.Tag_name).ToList());
var TagsD = Newtonsoft.Json.JsonConvert.SerializeObject(Model._DateList.Select(x => x.Tag_date).ToList());
Javascript
new Chart(document.getElementById("line-chart"), {
type: 'line',
data: {
labels: ["06 Oct", "06 Oct", "07 Oct", "08 Oct", "08 Oct", "09 Oct", "12 Oct", "12 Oct", "12 Oct", "13 Oct", "13 Oct", "14 Oct"], // DateTime
datasets: [{
data: @Html.Raw(TagsC),
label: @Html.Raw(TagsN),
borderColor: "#3e95cd",
fill: false
}]
}
});
SQL 数据外观:(自动变化)
我想要这样的结果:
我们将非常感谢大家的帮助。
【问题讨论】:
-
the wrong outcome- 你得到什么结果?@Html.Raw(TagsC)和@Html.Raw(TagsN)在运行时的样子(运行应用时可以在浏览器中看到) -
谢谢。但是,又是什么问题?图表根本不渲染吗?究竟是什么没有按预期工作?如果您可以使用jsbin.com、jsfiddle.net 等工具中的数据创建一个工作示例,这将容易得多。
-
@MoshFeu 我还添加了当前(实际)结果,这会给你一个想法。我得到的是单行而不是多行。每个
TagsN都应该是行,而不仅仅是 1 行。我想要的结果也在问题上。 -
我想我现在有了更好的照片。根据docs,如果你想显示多行
datasets数组应该有每个图表的项目。在您的代码中,该数组只有一项。我相信您需要将数组“分组”tagsN拆分,这样您将在数组中有 4 个组,您将作为datasets传递。 -
数据不一致(
data中的 13 项,labels中的 17 项)但这是一个开始 - jsfiddle.net/moshfeu/t3o0bvz2/31(请阅读第一条评论以获得进一步的解释。
标签: javascript model-view-controller charts chart.js linechart