1

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

在此处输入图像描述

任何帮助,将不胜感激。

@(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) #")

)

)

4

1 回答 1

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);
于 2014-05-06T06:20:20.883 回答