如何为动态堆叠柱形图设置类别标签

时间:2013-12-17 20:38:06

标签: asp.net-mvc-4 kendo-dataviz

我正在构建一个堆积柱形图。我不知道进入它的系列数量,所以我使用 foreach 来构建每个系列。我想要每个系列的类别标签。通常对于这样的事情,我会使用 categoryexpression ,但无法弄清楚如何使用我正在构建的方式来执行此操作。以下是没有标签的内容,仅供参考。

enter image description here

任何帮助都将不胜感激。

@(Html.Kendo().Chart()

.Name("chart")

.Theme("flat")

.Title("Issues Waterfall")

.DataSource(ds => ds

    .ServerOperation(false)

)

.Series(series =>

{

    series.Column(new double[] { 100 }).Name("Total").Color("Blue").Stack("Total");



    foreach (var resp in Model.listResponsibleDowntime)

    {

        series.Column(new double?[] { resp.percent_pad }).Name(resp.resp_name).Color("White").Opacity(0).Labels(false).Tooltip(false).Stack(resp.resp_name);

        series.Column(new double?[] { resp.percent_downtime }).Name(resp.resp_name).Color(resp.resp_color).Labels(lables => lables.Format("{0:n2}%").Visible(true).Position(ChartBarLabelsPosition.OutsideEnd)).Stack(resp.resp_name);

    }



    series.Column(new double?[] { Model.oee }).Name("Actual").Color("Green").Stack("Actual").Labels(lables => lables.Format("{0:n2}%").Visible(true).Position(ChartBarLabelsPosition.OutsideEnd));



})

.CategoryAxis(axis => axis

    .MajorGridLines(lines => lines.Visible(false))

    .Labels(model => model

        .Rotation(0)

        .Visible(true)

    )

    //.Categories(Model.listCategories)

)

.Legend(legend => legend

    .Position(ChartLegendPosition.Top)

    .Margin(20, 50, 20, 50)

    .Visible(false)

)

.ValueAxis(axis => axis

    .Numeric()

    .Min(0)

    .Max(100)

    .Labels(labels => labels.Format("{0:n0}%"))

)

.Tooltip(tooltip => tooltip

    .Visible(true)

    .Template("#= series.name #: #= kendo.format('{0:n2}', value) #")

)

1 个答案:

答案 0 :(得分:0)

我知道它已经老了,但这可能对下一个人有所帮助,因为Telerik的文档不会。

在你的foreach中,你需要传递一个IEnumerable类的列构建器,然后告诉它哪个字段是类别,哪个是值:

    public class KendoStackedColumnModel
    {
        public string StackName { get; set; }
        public string Colour { get; set; }

        public IEnumerable<KendoColumnModel> Columns { get; set; }

        public class KendoColumnModel
        {
            public decimal Value { get; set; }
            public string Category { get; set; }
        }

    }

在foreach中:

    series.Column(stacked.Columns).CategoryField("Category").Field("Value").Name(stacked.StackName).Color(stacked.Colour);