chart图表X轴显示数据库时间

wowclassic 2020-06-12 10:17:14


按钮单击,从SQL读取一列时间一列数值,时间列绑定到X轴,数值列绑定到Y轴,X轴最右侧刻度及标签无法显示,请问有什么办法解决?代码如下:

string searchString = string.Format("select [时间],[1#空间温度] from Data where [时间] between '{0}' and '{1}' order by [时间] ASC ", dtPickerStart.Value, dtPickerEnd.Value);
SqlDataAdapter dap = new SqlDataAdapter(searchString, conn);
DataSet ds = new DataSet();
dap.Fill(ds);
if (ds.Tables[0] != null)
{

//chart1.DataSource = ds.Tables[0];
//chart1.Series[0].XValueMember = "时间";
//chart1.Series[0].YValueMembers = "1#空间温度";
//chart1.DataBind();
//chart1.ChartAreas[0].AxisX.Minimum = (((DateTime)ds.Tables[0].Rows[0][0])).ToOADate();
//chart1.ChartAreas[0].AxisX.Maximum = ((DateTime)(ds.Tables[0].Rows[ds.Tables[0].Rows.Count - 1][0])).ToOADate();
chart1.Series[0].XValueType = ChartValueType.DateTime;
chart1.ChartAreas[0].AxisX.Interval = 1; //设置X轴坐标的间隔为1
chart1.ChartAreas[0].AxisX.LabelStyle.IsStaggered = true; //设置是否交错显示,比如数据多的时间分成两行来显示

List<DateTime> listX = new List<DateTime>();
List<double> listY = new List<double>();
listX.Clear();
listY.Clear();
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
listX.Add(Convert.ToDateTime(ds.Tables[0].Rows[i][0]));
listY.Add(Convert.ToDouble(ds.Tables[0].Rows[i][1]));
}
chart1.Series[0].Points.DataBindXY(listX, listY);
chart1.ChartAreas[0].AxisX.Minimum = listX[0].ToOADate();
chart1.ChartAreas[0].AxisX.Maximum = listX[ds.Tables[0].Rows.Count - 1].ToOADate();

}
有没有办法解决图中最右侧的刻度及标签无法显示问题?
以上是网上借鉴的代码,请问除以上外有没有最标准最优的SQL读取两列(一列时间,一列数值)怎么显示到chart上的方法?
...全文
117 点赞 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

还没有回复,快来抢沙发~

相关推荐
发帖
图表区
创建于2007-09-28

4808

社区成员

.NET技术 图表区
申请成为版主
帖子事件
创建了帖子
2020-06-12 10:17
社区公告
暂无公告