我在这个问题上花了几个小时,似乎无法知道如何解决它。
我正在尝试创建这样的堆积条形图:
http://demos.kendoui.com/dataviz/bar-charts/stacked-bar.html
我正在使用asp .net MVC(Razor)。
以下是一些示例代码:
@(Html.Kendo().Chart()
.Name("chart")
.Title("chart")
.Legend(legend => legend
.Position(ChartLegendPosition.Bottom)
)
.SeriesDefaults(seriesDefaults =>
seriesDefaults.Bar().Stack(true)
)
.Series(series =>
{
series.Bar(new double[] { 4 });
series.Bar(new double[] { 2 });
series.Bar(new double[] { 7 });
})
.CategoryAxis(axis => axis
.Categories("Machine")
.MajorGridLines(lines => lines.Visible(false))
)
.ValueAxis(axis => axis
.Numeric()
.Labels(labels => labels.Format("{0}"))
.Max(24)
.Line(line => line.Visible(false))
.MajorGridLines(lines => lines.Visible(true))
)
.Tooltip(tooltip => tooltip
.Visible(true)
.Template("#= series.name #: #= value #")
)
)
现在这是我面临的问题。 series.Bar(new double [] {4});为我的图表增加值4。问题是,在我编写代码的那一刻,我不知道会有多少个系列。这将取决于数据库中的数据。例如,如果有5条记录我需要添加5个系列,依此类推。
你知道如何添加这些系列吗?
干杯!
答案 0 :(得分:2)
对于有类似问题的其他人,我想我找到了解决方法。
@{
List<List<int>> myList = new List<List<int>>();
myList.Add(new List<int> { 7 });
myList.Add(new List<int> { 2 });
myList.Add(new List<int> { 3 });
myList.Add(new List<int> { 4 });
}
...
.Series(series =>
{
for (int i = 0; i < 4;i++ )
{
series.Bar(myList[i]);
}
})
...
由于Kendo Ui图表想要获取List,我必须创建列表列表。比使用for循环迭代所需的数据。这样,数据只能堆叠在一个类别中。
它允许系列的数量为变量(通过模型传递给视图)