0

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 Product Name
2013-10-01 11 29 Product Other Name

...ETC

这需要按周分组,因此如果用户选择 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);

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

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

4

1 回答 1

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-我们/图书馆/z72eefad.ASPX

于 2013-10-31T22:51:06.203 回答