我想制作一个可以从 2 个给定日期(开始日期和结束日期)生成的图表。我在msdn上研究了一段时间的图表控件,想出了一个开始。但是我遇到了一些问题。
它是一个图表,表示一周中的每一天(可能数周)的某事计数。y 轴代表金额,x 轴代表周数。
所以这个系列是一周中的日子,从周一到周日。还有一个小例子来完成解释,让你知道我的意思:开始日期:1-1-2013 结束日期:1-18-2013
将从数据库中获取信息,每行返回一个日期。使用 DateTime 拆分日期以获取日期名称。
假设 2013 年 1 月 1 日的金额是 26,所以我们得到了 26 行,日期为 2013 年 1 月 1 日。我们使用 DateTime 来查看它是一个星期二,然后它应该在意甲星期二放在图表中。这适用于每天,当新的一周开始时,它不能在第一个星期二添加,而是在本周的星期二添加。
这是我目前拥有的代码(测试已删除)
string ksubConnectionString = @"Data Source=xx.xx.x.x\xxxxxx;Initial Catalog=xxxxxxxxxxxx;
User ID=xxxxxxx;Password=xxxxxxxxxxxx;";
SqlConnection connection = new SqlConnection(ksubConnectionString);
SqlCommand cmd = connection.CreateCommand();
connection.Open();
// Query for data graph
cmd.CommandText = "SELECT closedDateTime FROM kasadmin.SDIncident WHERE closedDateTime < '" + textBox2.Text + " 23:59:59.000' AND closedDateTime > '" + textBox1.Text + " 00:00:00.001' ORDER BY closedDateTime ASC";
richTextBox1.Text = "";
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
List<string> ArrayDates = new List<string>();
for (int i = 0; rdr.Read(); i++)
{
ArrayDates.Add(rdr.GetDateTime(0).ToString());
}
string[] SplittedDate;
string[] DatetimeSplit;
int Jaar;
int Maand;
int Dag;
for (int k = 0; k <ArrayDates.Count;k++ )
{
SplittedDate = ArrayDates[k].Split(' ');
DatetimeSplit = SplittedDate[0].Split('-');
Jaar = Convert.ToInt32(DatetimeSplit[2].ToString());
Maand = Convert.ToInt32(DatetimeSplit[1].ToString());
Dag = Convert.ToInt32(DatetimeSplit[0].ToString());
DateTime dt = new DateTime(Jaar, Maand, Dag);
if (dt.DayOfWeek.ToString() == "Monday")
{
this.chart1.Series[0].Points.AddY(1);
}
if (dt.DayOfWeek.ToString() == "Tuesday")
{
this.chart1.Series[1].Points.AddY(1);
}
if (dt.DayOfWeek.ToString() == "Wednesday")
{
this.chart1.Series[2].Points.AddY(1);
}
}
}
else
{
richTextBox1.Text = "No rows found.";
}
rdr.Close();
connection.Close();