关于MsChart使用柱形图遇到的一个问题。

newworld826 2010-12-06 03:18:41
首先,我的表结构是这样的:
saletable表:
yearmonth sale
200901 987689.12
... ...
201001 ...
... ...

就是yearmonth(int型)以这种形式代表年月.

下面是我的部分代码:

DateTime d1 = DateTime.Parse(d11.Value);
DateTime d2 = DateTime.Parse(d12.Value);//d11和d12是前台my97插件,这里是获取到用户输入的开始和结束时间。
string sdate = d1.ToString("yyyyMM");
string edate = d2.ToString("yyyyMM");//这里是转换起止日期的格式,例如转换成200901。
DataSet ds = db.GetDataSet("select yearmonth,sum(sale) as sumsale from saletable where yearmonth>='" + sdate + "'and yearmonth<='" + edate + "'group by yearmonth order by yearmonth", "temtable");
if (ds.Tables[0].Rows.Count>0)
{
DataView dv = new DataView(ds.Tables[0]);
dv.Sort = "yearmonth";
Chart1.Series["Series1"].Points.DataBindXY(dv, "yearmonth", dv, "sumsale");
}
else
{
return;
}


~~~~~~~~~~
运行后,例如用户输入的起止日期在同一年(例如201001至201006)就没有问题正常显示,但是如果用户输入的起止日期夸年度了,例如输入200911至201004,就会出现如下图的结果:


X轴的日期部分显示就会出错,貌似就会按着200910、200930、200950这些顺序一直拍下去。请问该怎么控制X轴和Y轴来显示我想要的正确的图啊?多谢了!感激不尽!!!
...全文
176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
newworld826 2010-12-07
  • 打赏
  • 举报
回复
找到问题在哪了,问题出在我为了跨年的原因,用取到的日期中的 年 和 月 分别相减来计算控制用户只能查询6个月以内的数据。错误就出在我设的这几个if条件里。再另开一贴来询问如何控制查询时间的问题吧。多谢各位了!结贴。
叶子 2010-12-06
  • 打赏
  • 举报
回复
你现在的x轴是数字,转成时间格式再绑定到chart上。
koukoujiayi 2010-12-06
  • 打赏
  • 举报
回复
你这样是作为数字排序显示在x轴上,
可以转换成字符来显示,就可以去掉之间没有数据的间距!
如你的sql可以这样:
string sql="select convert(varchar(7),年月字段) as x轴字段,y轴字段 from 表";

newworld826 2010-12-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 babyt 的回复:]
200910还好理解,是2009-10,
那200930、200950怎么出来的,难道是2009-3,2009-5
但是也应该出来时20093,20095啊,怎么会多了个0呢
数据库里怎么存的?
[/Quote]

数据库里的yearmonth是这样的:
200901至200912接着就是201001就是按正常年月排列的。不知道为何会出现这样的结果。。。
阿泰 2010-12-06
  • 打赏
  • 举报
回复
200910还好理解,是2009-10,
那200930、200950怎么出来的,难道是2009-3,2009-5
但是也应该出来时20093,20095啊,怎么会多了个0呢
数据库里怎么存的?

4,820

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧