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上的方法?
...全文
372 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_59484534 2022-12-22
  • 打赏
  • 举报
回复

请问楼主解决了没

4,816

社区成员

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

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