我試圖動態地將一行添加到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
我找到了解決問題的方法:)我用完整的代碼更新了問題 –