我正在构建一个堆积柱形图。我不知道进入它的系列数量,所以我使用 foreach 来构建每个系列。我想要每个系列的类别标签。通常对于这样的事情,我会使用 categoryexpression ,但无法弄清楚如何使用我正在构建的方式来执行此操作。以下是没有标签的内容,仅供参考。
任何帮助都将不胜感激。
@(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) #")
)
)
答案 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);