数据阅读器正在读取滚动数字两次,因为我第二次打开它我第三次打开它三次

时间:2016-09-03 05:24:32

标签: c# sql-server-2012

Dear Coders!

希望你们都很好。我正在学校的软件。主屏幕上有两个按钮;学生信息列表&更新学生信息。单击更新学生信息,打开可以编辑学生信息的屏幕。当我点击组合框选择卷号时,它显示所有的好。但是当我回到主屏幕&单击学生信息列表;它打开数据网格视图(包含学生的所有信息)。然后我再次打开更新信息,它显示Roll No两次。重复这些步骤,它显示滚动没有增加。 图片以链接的形式给出。

下面给出了代码。任何帮助都会得到满足。 谢谢

[try
        {
            int i = 0;
            using (SqlConnection sqlCon = new SqlConnection(Form1.connectionString))
            {
                string commandString = "SELECT RollNO  FROM Student1";
                // MessageBox.Show(commandString);
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCon.Open();
                SqlDataReader dr = sqlCmd.ExecuteReader();
                while (dr.Read())
                {
                    i = 1;
                    comboBox3.Items.Add(dr\[0\]);

                }
                dr.Close();
            }
            if (i == 0)
            {
                MessageBox.Show("Database Error");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }][2]

1 个答案:

答案 0 :(得分:1)

实际上每次你填充你的组合框你都没有清除以前的项目,我已经修改了你的代码试试这个

try
        {
            int i = 0;
            using (SqlConnection sqlCon = new SqlConnection(Form1.connectionString))
            {
                string commandString = "SELECT RollNO  FROM Student1";
                comboBox3.Items.Clear(); //first clear previous items then refill
                // MessageBox.Show(commandString);
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);
                sqlCon.Open();
                SqlDataReader dr = sqlCmd.ExecuteReader();
                while (dr.Read())
                {
                    i = 1;
                    comboBox3.Items.Add(dr[0]);
                }
                dr.Close();
            }
            if (i == 0)
            {
                MessageBox.Show("Database Error");
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }