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