2013-04-20 3 views
1

У меня есть быстрый вопрос. Всякий раз, когда я вставляю что-то в свой C# -интерфейс (который подключен к базе данных SQL), я получаю сообщение «Сохраненные данные», которое я запрограммировал (и он сохраняет данные в базе данных), но мой DataGridView не обновляется, если только я закройте приложение и запустите его снова.Обновление DataGridView в Runtime

Мой код:

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); 
      } 

EDIT

Я нашел ответ сам: как сказал @Obama. Мне нужно вызвать 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); 
      } 
+0

У вас метод, который обновить DataGridView? если да, то какой я не понимаю испанский очень хорошо :) – Obama

+1

Спасибо @Obama, я уже отвечаю на вопрос ниже. –

ответ

0

Только после MessageBox.Show("Datos Guardados", "Mensaje"); вызова CargaDataGridView();

+0

О, спасибо ... Я забыл упомянуть об этом; если я это сделаю, он обновит мое datagridview, но старый datagridview останется там. Например, если у меня есть в моей базе данных записи с 1 по 4, и я вставляю 5, у моего datagridview будут записи с 1 по 4 и 1 через 5, поэтому у него есть 9 записей, когда я хочу отобразить 4 –

+0

, вам нужно очистить строки datagridview при обновлении (в методе обновления) CargaDataGridView(); по dataGridView1.Rows.Clear(); , если вы думаете, что я помог вам принять мой ответ :) – Obama

+0

Хахаха, я пришел к такому же выводу: D НО Я все равно приму это как ответ, СПАСИБО МНОГО, @Obama –

Смежные вопросы