簡體   English   中英

在運行時更新DataGridView

[英]Update a DataGridView on Runtime

我有一個簡單的問題。 每當我在C#接口(連接到SQL數據庫)中插入某些內容時,都會收到我編寫的“已保存數據”消息(它將數據保存在數據庫中),但是除非我我不更新DataGridView,否則我不會更新關閉應用程序,然后再次運行。

我的代碼是:

private void frmCatalogoMunicipios_Load(object sender, EventArgs e)
    {
        cmd.Connection = conexion;
    }

    private void frmCatalogoMunicipios_Shown(object sender, EventArgs e)
    {
        CargaEstados();
        CargaDataGridView();
    }

    private void CargaEstados()
    {
        conexion.Open();
        txtNomMun.Focus();
        try
        {
            DataSet ds = new DataSet();
            MySqlDataAdapter da = new MySqlDataAdapter("SELECT cveestado, nombre FROM tbestados", conexion);
            da.Fill(ds, "FillDropDown");
            cbEstado.DisplayMember = "Nombre";
            cbEstado.ValueMember = "CveEstado";
            cbEstado.DataSource = ds.Tables["FillDropDown"];
            conexion.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }

    private void CargaDataGridView()
    {
        conexion.Open();
        try
        {
            cmd.CommandText = "SELECT m.cvemunicipio, m.nombre AS NombreA, e.nombre AS NombreB FROM tbMunicipios m INNER JOIN tbEstados e ON m.CveEstado = e.CVeEstado";
            rd = cmd.ExecuteReader();
            while (rd.Read())
            {
                this.dataGridView1.Rows.Add(rd.GetValue(0), rd.GetValue(1), rd.GetValue(2));
            }
            conexion.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }


conexion.Open();
            try
            {
                cmd.CommandText = "insert into tbmunicipios (nombre, cveestado) values ('" + txtNomMun.Text + "', '" + cbEstado.SelectedValue.ToString() + "')";
                cmd.ExecuteNonQuery();
                cmd.Clone();
                MessageBox.Show("Datos Guardados", "Mensaje");
                conexion.Close();
                Nuevo();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

編輯

我自己找到了答案:就像@奧巴馬說的那樣。 我必須先調用CargarDataGridView(),但在此之前我要用dataGridView1.Rows.Clear()刪除所有行。

因此,我的最終代碼是:

                conexion.Open();
            try
            {
                cmd.CommandText = "insert into tbmunicipios (nombre, cveestado) values ('" + txtNomMun.Text + "', '" + cbEstado.SelectedValue.ToString() + "')";
                cmd.ExecuteNonQuery();
                cmd.Clone();
                MessageBox.Show("Datos Guardados", "Mensaje");
                conexion.Close();
                dataGridView1.Rows.Clear();
                CargaDataGridView();
                Nuevo();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

MessageBox.Show("Datos Guardados", "Mensaje"); 調用CargaDataGridView();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM