我想创建一个可以从2个给定日期,开始日期和结束日期生成的图表。 我在msdn上研究了图表控件一段时间,然后想出了一个开始。但是我碰到了一些问题。
它是一个图表,表示每周每天的事情数,可能是数周。 y轴表示数量,x轴表示周数。
所以这个系列是星期几,星期一到星期日。 还有一个例子来完成解释,让你知道我的意思: 开课日期:1-1-2013 截止日期:2013年1月18日
将从数据库获取信息,每行返回一个日期。 拆分日期以使用DateTime获取日期名称。
让我们说1-1-2013的金额是26,所以我们得到了26行,日期为1-1-2013。 我们使用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();