C#,添加数据后刷新组合框

本文关键字:刷新 组合 数据 添加 | 更新日期: 2023-09-27 18:37:24

我已经阅读了许多其他关于同一件事的问题,但似乎答案与我如何执行代码无关。从用户界面向我的数据库添加或删除记录或信息行后,在我重新启动应用程序之前,它不会显示在组合框中。也许有人可以启发我,因为我对此有些陌生。下面是我单击添加按钮时的代码。

 private void FBinterface_Load(object sender, EventArgs e)
    {
        txtSerial.Focus();
        try
        {
            connection.Open();
            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            string SerialQuery = "select SerialNumber from Inventory";
            command.CommandText = SerialQuery;
            //TO READ DATA
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                comboSerial.Items.Add(reader["SerialNumber"]);
            }
            connection.Close();
        }
        catch (OleDbException ex)
        {
            MessageBox.Show(ex.Message);
            connection.Close();
        }
 private void btnAdd_Click(object sender, EventArgs e)
    {
        if (!string.IsNullOrEmpty(txtSerial.Text))
        {
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                command.CommandText = @"insert into
                    Inventory(SerialNumber,PartNumber,ROnumber,Location)
                    values ('" +
                        txtSerial.Text + "','" +
                        txtPart.Text + "','" +
                        txtRO.Text + "','" +
                        txtLocation.Text + "')";
                //TO READ DATA
                command.ExecuteNonQuery();
                MessageBox.Show("Inventory Added");
                txtPart.Clear();
                txtSerial.Clear();
                txtRO.Clear();
                txtLocation.Clear();
                if (dataGridFB.DataSource != null)
                {
                    dataGridFB.DataSource = null;
                }
                else
                {
                    dataGridFB.Rows.Clear();
                }
                txtSerial.Focus();
                connection.Close(); // CLOSE HERE OR
                                    // YOU CANNOT ENTER RECORDS SIMULTANEOUSLY
            }
            catch (OleDbException ex)
            {
                MessageBox.Show(ex.Message);
                connection.Close();
            }
        }
    }

C#,添加数据后刷新组合框

作为一个简单的修复,您可以在 btnAdd_Click 事件处理程序中的行connection.Close()之前添加以下代码片段:

            OleDbCommand command = new OleDbCommand();
            command.Connection = connection;
            string SerialQuery = "select SerialNumber from Inventory";
            command.CommandText = SerialQuery;
            //TO READ DATA
            OleDbDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                comboSerial.Items.Add(reader["SerialNumber"]);
            }

此代码片段本质上将重新绑定ComboBox comboSerial。如果其他组合框的基础数据受到btnAdd_Click过程的影响,则也是如此。此外,创建一个专用过程(类似于 ResfreshAllComboBoxes() ),放置类似于上述示例片段的代码并在基础数据更改后调用它可能会很有成效。

希望这可能会有所帮助。

最好将

代码放入 (FBinterface_Load) 新方法中,例如 FillComboSerial(),然后您必须在关闭连接后立即插入每个新记录后调用该方法。