Telerik HtmlChart Multiple LineSeries

时间:2013-10-30 17:30:12

标签: c# asp.net sql telerik

2个问题,我正在尝试创建一个具有简单Y轴和X轴的图表。 Y轴是'单位'X轴的日期范围(1周),这是我的SQL查询:

SELECT     dbo.ProductSales.OrderDate, dbo.ProductSales.ProductID, dbo.ProductSales.UnitsSold, dbo.Product.Name
                                FROM         dbo.ProductSales INNER JOIN
                  dbo.Product ON dbo.ProductSales.ProductID = dbo.Product.ProductID

                                WHERE     (DistributionCentreID = 3)
                                GROUP BY dbo.ProductSales.OrderDate, dbo.ProductSales.ProductID, dbo.ProductSales.UnitsSold, dbo.Product.Name
                                HAVING      (OrderDate >= CONVERT(DATETIME, '01/10/2013', 103)) AND (OrderDate <= CONVERT(DATETIME, '07/10/2013', 103))

这会产生这种数据:

OrderDate ProductID UnitsSold Name
2013-10-01 10 46产品名称
2013-10-01 11 29产品其他名称

...等

这需要按周分组,因此如果用户选择30天的时间段,它将分组到相关周。这是第一个问题。

第二个问题是将这些数据变为图表。我特意使用Telerik RadControls和HtmlChart控件。

我已经解决了这个问题,但是我无法弄清楚如何设置X(日期)值,一旦我弄清楚如何分组成几周,这可能会更容易。

示例代码:

var htmlChart = new RadHtmlChart
                        {
                            ID = "htmlChart",
                            Width = Unit.Pixel(680),
                            Height = Unit.Pixel(400)
                        };

    htmlChart.Legend.Appearance.Position = ChartLegendPosition.Bottom;

    htmlChart.PlotArea.XAxis.TitleAppearance.Text = "Date";
    htmlChart.PlotArea.YAxis.TitleAppearance.Text = "Units Sold";

    htmlChart.PlotArea.XAxis.MajorTickType = TickType.Outside;

    htmlChart.PlotArea.XAxis.MinorTickType = TickType.Outside;

    List<productSalesTrend.productsalesTrendbyDates> data = trendAnalysisbyDate(1);

    foreach (string product in data.GroupBy(x => x.productName).Select(x => x.Key))
    {
        IEnumerable<productSalesTrend.productsalesTrendbyDates> productData = data.Where(x => product != null && x.productName == product);

        foreach (var productsalesTrendData in productData)
        {

            LineSeries areaSeries = htmlChart.PlotArea.Series[0] as LineSeries;




        }

    }

    HtmlChartHolder.Controls.Add(htmlChart);

如果您需要更多信息,请询问。

感谢您的时间,我期待着任何回复/帮助!

1 个答案:

答案 0 :(得分:1)

以下是如何在RadHtmlChart中显示日期值:

http://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/dateaxis/defaultcs.aspx

http://www.telerik.com/help/aspnet-ajax/htmlchart-date-axis.html

这将向您展示如何使用数据导航预选一周,让用户浏览所有数据:

http://demos.telerik.com/aspnet-ajax/htmlchart/examples/functionality/datanavigation/defaultcs.aspx

要以编程方式创建系列及其项目,请检查其API:

http://www.telerik.com/help/aspnet-ajax/htmlchart-server-side-api-configure-series.html

http://www.telerik.com/help/aspnet-ajax/htmlchart-server-side-api-configure-series-items.html SeriesItems具有构造函数,可以将y值作为参数。

如果你只想要一个星期,调整sql查询只返回相关数据(你似乎已经有了,你可以考虑使用参数从代码中获取日期): http://msdn.microsoft.com/en-us/library/z72eefad.ASPX