shield ui chart:动态生成系列?

时间:2014-04-12 14:20:15

标签: c# asp.net-mvc-4 shieldui

有没有办法在不事先知道系列中会有多少系列的情况下将系列添加到图表中?例如,我想在多年的变量选择中按月在X轴上绘制图形。每年都会是一个系列。

我想在按年分组时绑定到IEnumerable - 并在每个组项目上创建一个系列,但我无法真正设想代码。

1 个答案:

答案 0 :(得分:2)

我使用自定义帮助程序(HtmlHelper扩展方法)。我改编了http://demos.shieldui.com/aspnet/aspnet-chart/programmatic-chart-creation的示例,但该示例适用于ASP.NET Web表单。我正在做MVC。我的解决方案涉及使用ChartBuilder<>帮助者中的对象。

public static class ChartExtensions
{
    public static ChartBuilder<PropertyPivotAverageAmountPerMonth_Result> AnnualComparison(this HtmlHelper html, int id)
    {
        MyDatabaseEntities db = new MyDatabaseEntities();
        var results = db.PropertyPivotAverageAmountPerMonth(id);
        ChartBuilder<PropertyPivotAverageAmountPerMonth_Result> chart = new ChartBuilder<PropertyPivotAverageAmountPerMonth_Result>(html, results);

        chart.AxisX(axisX => axisX.CategoricalValues("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"));
        chart.PrimaryHeader(header => header.Text("Annual Cost Comparisons"));


        foreach (var year in results)
        {
            chart.DataSeries(s => s.Line()
                .CollectionAlias(year.Year.ToString())
                .Data(new object[]
                    {
                        new { x=0, y=year.C1 },
                        new { x=1, y=year.C2 },
                        new { x=2, y=year.C3 },
                        new { x=3, y=year.C4 },
                        new { x=4, y=year.C5 },
                        new { x=5, y=year.C6 },
                        new { x=6, y=year.C7 },
                        new { x=7, y=year.C8 },
                        new { x=8, y=year.C9 },
                        new { x=9, y=year.C10 },
                        new { x=10, y=year.C11 },
                        new { x=11, y=year.C12 }
                    }));
        }
        return chart;
    }