【问题标题】:Modeling POCO According to Kendo-DataViz Stacked Chart根据 Kendo-DataViz 堆积图建模 POCO
【发布时间】:2013-12-03 06:17:01
【问题描述】:

我在创建 POCO 类以使用 Kendo-DataViz 时遇到一个问题。

我们想使用 MVC 包装器创建堆叠图表,并且在 Kendo 示例中它显示了一些静态值,例如

     .Column(new int[] { 1100941, 1139797, 1172929, 1184435, 1184654 }).Stack(true)
     .Column(new int[] { 810169, 883051, 942151, 1001395, 1184654  }).Stack(true)

现在这将创建 5 个条形图,每个条形图堆叠有更多数据,每个值在 int 数组对应不同的柱线,所有数组中的每个索引对应相同的柱线

即:1100941810169对应第一条bar1

那么如何将这些静态数据建模成 POCO 类并填充数据。

我已经创建了如下的 POCO

    public class TroubleFound
    {
    //Service center Name for which trouble is found
    public string ServiceCenterName { get; set; }
    //Which type of trouble is found
    public string TroubleFoundName { get; set; }
    //total count of trouble found
    public List<int> TroubleFoundCount { get; set; }
    }

但它不起作用,因为它为每个栏创建了一列,而不是在单个栏上堆叠

    series.Bar(data.TroubleFoundCount) 

那么如何创建 POCO 并根据 Kendo-Dataviz 进行填充

请参考http://demos.kendoui.com/dataviz/bar-charts/stacked-bar.html了解我真正想要开发的内容。

【问题讨论】:

  • 信息有点脱节,好像.Column() 内容和base.Bar() 部分之间缺少一大块逻辑。从您的问题中确定任何内容是完全不可能的,即使有说尝试.Column(data.TroubleFoundCount).Stack(true) 的诱惑。试着展示这一切是如何结合在一起的,我相信很快就会有答案

标签: asp.net asp.net-mvc asp.net-mvc-4 c#-4.0 kendo-dataviz


【解决方案1】:

我最近不得不做一些非常相似的事情,但使用了列。我相信您可以将系列类型从列切换到栏,而无需进行任何其他更改。 这是我们使用的模型:

public class KendoStackedColumnChartModel
{
    public string Title { get; set; }

    public IEnumerable<KendoStackedColumnModel> StackedColumns { get; set; }

    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; }
        }

    }

}

在包装器中:

        .Series(series =>
        {
            foreach (WebUI.Models.KendoStackedColumnChartModel.KendoStackedColumnModel stacked in Model.StackedColumns)
            {
                series.Column(stacked.Columns).CategoryField("CategoryLabel").Field("Value").Name(stacked.StackName).Color(stacked.Colour);
            }
        } 
    )
    .SeriesColors(new string[] { "#20BDFF", "#84DAFF", "#FFCD8A", "#FE9915", "#FF6633" })

希望这可以帮助其他人节省一些时间...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多