我试图动态地将一行添加到chart.js图表,我不知道我有多少个数据集 现在我已经在这个问题上敲了两天了。 ..将动态数据集添加到chart.js
我有一个包含年份,月份和值的列表:
public int Month { get; set; }
public int Year { get; set; }
public int Value { get; set; }
我的HTML只是图表画布:
<div>
<canvas id="myChart"> </canvas>
</div>
我填充图所示:
var dataList = [];
var lableList = [];
@foreach (var dataInput in Model.TurnoverByReservation)
{
@:dataList.push("@dataInput.Value");
@:lableList.push("@dataInput.MonthName");
}
var ctx = document.getElementById("myChart");
var myChart = new Chart(ctx, {
type: 'line',
data: {
labels: lableList,
datasets: [
{
label: 'Booking value',
data: dataList,
backgroundColor: backgroundColors,
borderColor: borderColors,
borderWidth: 1
}
]
},
options: {
scales: {
yAxes: [
{
ticks: {
beginAtZero: true,
callback: function(value, index, values) {
if (parseInt(value) >= 1000) {
return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
} else {
return value;
}
}
}
}
]
}
}
});
所以问题是;我如何将不同的数据集添加到图表中,以便我可以使用类似的东西?
@foreach (var year in Model.TurnoverByReservation.OrderBy(x =>x.Month).GroupBy(x => x.Year))
{
foreach (var value in year)
{
//Add the value to the dataset, somehow...
}
}
tektiv你好,谢谢你的回答,它的工作原理PERFEKT :)能否请您解释我如何可以修改代码所以它适用于来自mvc模型的数据? 像这样的: @foreach(VAR年在Model.TurnoverByReservation.OrderBy(X => x.Month).GroupBy(X => x.Year)) { 的foreach(在年VAR值) { //将值添加到数据集 } } –
@MarcusOhlsson我不习惯MVC,特别是.net的,虽然我不知道循环导入数据的确切语法。但我确定它与循环中的内容没有什么不同。我想你需要用'@foreach(Model.Turnover中的var年)...'来改变'for(year in model)'' – tektiv
我找到了解决问题的方法:)我用完整的代码更新了问题 –