Kendo UI条形图中的动态系列

时间:2013-10-15 09:08:56

标签: asp.net-mvc charts telerik kendo-ui

我在这个问题上花了几个小时,似乎无法知道如何解决它。

我正在尝试创建这样的堆积条形图:

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个系列,依此类推。

你知道如何添加这些系列吗?

干杯!

1 个答案:

答案 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循环迭代所需的数据。这样,数据只能堆叠在一个类别中。

它允许系列的数量为变量(通过模型传递给视图)