1

使用 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"))
)
4

2 回答 2

1

以下是使用上面建议的模板解决此问题的示例:

    labels: {
template: "#= (dataItem.Total > 0 ? dataItem.Total: '' ) #",
visible: true,
background: "transparent",
position: "center"
            }
于 2019-02-25T13:16:11.630 回答
0

我不确定您是否可以按照您的想法进行操作,如果可以的话,您需要在标签上使用带有条件语句的模板:

.Labels(labels => labels.Template("#: dataItem.Value #")...

可能更容易将一个字段添加到您的视图模型中,仅用于显示标签,如果值为零,则使用空字符串填充它。

于 2014-05-12T07:07:53.910 回答