显示不必要更改的 C# 图表

本文关键字:图表 不必要 显示 | 更新日期: 2023-09-27 18:33:46

图表中不必要的更改(图像链接) 我正在研究 C#,Winform.这是我的代码.我正在尝试按图表显示所选日期的注册人数 这在第一次选择日期时完美运行 从日期时间选择器,但在第二次选择和第二次时间按钮单击它显示意外的变化(请参阅图像以完美理解)。所以我不希望每次用户选择日期时都想要这种更改,他必须获得只有 5 个柱的完美输出。我该怎么做?请帮忙!提前谢谢。

private void LoadChart_Click(object sender, EventArgs e)
    {
        string date1 = dateTimePicker1.Value.ToString("dd-MM-yyyy");
        string date2 = dateTimePicker1.Value.AddDays(1).ToString("dd-MM-yyyy");
        string date3 = dateTimePicker1.Value.AddDays(2).ToString("dd-MM-yyyy");
        string date4 = dateTimePicker1.Value.AddDays(3).ToString("dd-MM-yyyy");
        string date5 = dateTimePicker1.Value.AddDays(4).ToString("dd-MM-yyyy");
        string cmdTextDate = "SELECT * FROM AllInOneTable WHERE Date=@Date";
        OleDbCommand commandDate = new OleDbCommand(cmdTextDate, my_con);
        commandDate.CommandText = cmdTextDate;
        commandDate.Parameters.AddWithValue("@Date", date1);
        DataSet data = new DataSet();
        OleDbDataAdapter da = new OleDbDataAdapter(commandDate);
        da.Fill(data);
        int a = data.Tables[0].Rows.Count;
        string cmdTextDate2 = "SELECT * FROM AllInOneTable WHERE Date=@Date";
        OleDbCommand commandDate2 = new OleDbCommand(cmdTextDate2, my_con);
        commandDate2.CommandText = cmdTextDate2;
        commandDate2.Parameters.AddWithValue("@Date", date2);
        DataSet data2 = new DataSet();
        OleDbDataAdapter da2 = new OleDbDataAdapter(commandDate2);
        da2.Fill(data2);
        int b = data2.Tables[0].Rows.Count;
        string cmdTextDate3 = "SELECT * FROM AllInOneTable WHERE Date=@Date";
        OleDbCommand commandDate3 = new OleDbCommand(cmdTextDate3, my_con);
        commandDate3.CommandText = cmdTextDate3;
        commandDate3.Parameters.AddWithValue("@Date", date3);
        DataSet data3 = new DataSet();
        OleDbDataAdapter da3 = new OleDbDataAdapter(commandDate3);
        da3.Fill(data3);
        int c = data3.Tables[0].Rows.Count;
        string cmdTextDate4 = "SELECT * FROM AllInOneTable WHERE Date=@Date";
        OleDbCommand commandDate4 = new OleDbCommand(cmdTextDate4, my_con);
        commandDate4.CommandText = cmdTextDate4;
        commandDate4.Parameters.AddWithValue("@Date", date4);
        DataSet data4 = new DataSet();
        OleDbDataAdapter da4 = new OleDbDataAdapter(commandDate4);
        da4.Fill(data4);
        int d = data4.Tables[0].Rows.Count;
        string cmdTextDate5 = "SELECT * FROM AllInOneTable WHERE Date=@Date";
        OleDbCommand commandDate5 = new OleDbCommand(cmdTextDate5, my_con);
        commandDate5.CommandText = cmdTextDate5;
        commandDate5.Parameters.AddWithValue("@Date", date3);
        DataSet data5 = new DataSet();
        OleDbDataAdapter da5 = new OleDbDataAdapter(commandDate5);
        da5.Fill(data5);
        int f = data5.Tables[0].Rows.Count;
        this.chart1.Series["Series1"].Points.AddXY(date1, a);
        this.chart1.Series["Series1"].Points.AddXY(date2, b);
        this.chart1.Series["Series1"].Points.AddXY(date3, c);
        this.chart1.Series["Series1"].Points.AddXY(date4, d);
        this.chart1.Series["Series1"].Points.AddXY(date5, f);
    }

显示不必要更改的 C# 图表

尝试清除序列(如下),然后重新添加新数据。不确定这是否是您想要的 100%,但似乎是这样。

Series.Points.Clear();
//for your code
this.chart1.Series["Series1"].Points.Clear();

另外要附带说明的是 - 您很少应该调用SELECT * FROM或对数据库进行多次调用来检索可以通过单个查询完成的信息。

如果您使用的是 sql,请查看 GROUP BYUNION SQL 查询的关键字。它将允许您将多个呼叫压缩为一个。然后,如果您认为需要,请根据需要将其分开。Linq在这里会派上用场。

此示例将向您展示我所谈论内容的概述,即使它在上下文中并不相同。但是,它更高级一些