1

我想制作一个可以从 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();
4

0 回答 0