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);
如果您需要更多信息,请询问。
感谢您的时间,我期待任何回复/帮助!