因此,我将自定义业务对象列表绑定到Rad图表,对于此实例,概述了一年的月收入。我为X轴标签设置的日期没有呈现为我设置的日期。
这是我的基本代码,您可以看到获取给定年份的 monthLedger 对象列表。 monthLedger 对象具有不同的属性,但此方案的主要属性为 monthLedger.Full_date 和 monthLedger.Revenue_Amount 。
List<monthLedger> year = getYearRevenueByMonth(2011);
DataSeries ser = new DataSeries();
foreach(monthLedger month in year)
{
ser.Add(new DataPoint
{
YValue = Convert.ToDouble(month.Revenue_Amount),
Label = month.Revenue_Amount.ToString("0.00###"),
XValue = month.Full_Date.ToOADate()
});
}
radChart1.DefaultView.ChartArea.AxisX.IsDateTime = true;
radChart1.DefaultView.ChartArea.AxisX.AutoRange = true;
radChart1.DefaultView.ChartArea.AxisX.DefaultLabelFormat = "dd-MMM";
radChart1.DefaultView.ChartArea.DataSeries.Add(ser);
以下是我将在2011年的列表中获得的数据(Full_Date || Revenue_Amount):
我期望获得的是一个包含12个月的漂亮图表,但是13列最终被绘制成图并且标记的日期与我转换为OLE自动化日期的日期完全不同。
我附上了图形结果的截图:
我做错了什么?
答案 0 :(得分:2)
正如我从你的图片中看到的那样,图表绘制了30天步长的条形图。这是由XAxis的自动范围引起的。由于图表无法定义1个月的准时步骤(月份具有不同的天数),因此XAxis自动定义30天是最合适的。 设置手动范围对您没有帮助,因此我建议您使用XCategory而不是XValue:
foreach(monthLedger month in year)
{
ser.Add(new DataPoint
{
YValue = Convert.ToDouble(month.Revenue_Amount),
Label = month.Revenue_Amount.ToString("0.00###"),
XCategory = month.Full_Date
});
}
你可以删除它 - radChart1.DefaultView.ChartArea.AxisX.IsDateTime = true; 因为它不再需要了。
干杯, 伊芙吉尼娅