使用Dataviz和MVC,我想创建一个堆叠图表(正在运行)。但我想只显示系列标签,如果该系列的值大于零。
这是标记
@(Html.Kendo().Chart<ChartModel>(Model)
.Name("chart")
.Title("Pending Orders")
.Legend(legend => legend
.Visible(false)
)
.SeriesDefaults(seriesDefaults =>
seriesDefaults.Column().Stack(true)
.Labels(labels => labels.Background("transparent").Visible(true).Font("40px sans-serif").Position(ChartBarLabelsPosition.Center).Color("black"))
)
.Series(series =>
{
series.Column(model => model.OnTimeCount).Name("On Time").Color("Green");
series.Column(model => model.WarningCount).Name("Warning").Color("Yellow");
series.Column(model => model.AlertCount).Name("Alert").Color("Red");
})
.CategoryAxis(axis => axis
.Categories(model => model.Day)
.MajorGridLines(lines => lines.Visible(false))
)
.ValueAxis(axis => axis
.Numeric()
.Line(line => line.Visible(false))
.MajorGridLines(lines => lines.Visible(false))
)
.Tooltip(tooltip => tooltip
.Visible(true)
.Template("#= series.name #: #= value #")
)
)
在系列默认值中,标签设置为可见。我无法弄清楚在那里放置什么使它有条件。我尝试过lamba表达式,但是没有用。我认为必须有一种方法来访问系列值,但我无法弄清楚如何。
这是有问题的夹头
.SeriesDefaults(seriesDefaults =>
seriesDefaults.Column().Stack(true)
.Labels(labels => labels.Background("transparent").Visible(true).Font("40px sans-serif").Position(ChartBarLabelsPosition.Center).Color("black"))
)
答案 0 :(得分:0)
我不确定你是否可以按照自己的想法去做,如果可以的话,你需要在条件声明的标签上使用模板:
.Labels(labels => labels.Template("#: dataItem.Value #")...
可能更容易向视图模型添加一个字段,仅用于显示标签,如果值为零,则用空字符串填充它。
答案 1 :(得分:0)
以下是使用上述建议的模板来解决此问题的示例:
labels: {
template: "#= (dataItem.Total > 0 ? dataItem.Total: '' ) #",
visible: true,
background: "transparent",
position: "center"
}