2012-07-04 1 views
0

Я добавляю, удаляя и обновляю данные в базу данных в Winforms. У меня есть gridview для всех форм добавления, удаления и обновления. После удаления записей при нажатии кнопки «удалить» удаленная запись должна быть немедленно удалена из dataGridView.Обновление данныхGridView элементов при добавлении или удалении записи в базе данных?

//// Обратите внимание, что DATABIND дает ошибку, то есть ссылку на использование или сборку отсутствует.

Код За:

private void btnDelete_Click(object sender, EventArgs e) 
    { 

     if (txtIDD.Text == "") 
     { 
      MessageBox.Show("Please fill ID no. of record to Delete", "Important Message"); 

     } 
     else 
     { 
      try 
      { 
       OleDbCommand Cmd = new OleDbCommand(); 
       Cmd.Connection = conn; 
       conn.Open(); 
       Cmd.CommandText = "DELETE FROM AddressBook WHERE ID="+txtIDD.Text; 
       Cmd.CommandType = CommandType.Text; 
       Cmd.ExecuteNonQuery(); 
       Cmd.Connection.Close(); 
       conn.Close(); 
       dataGridView3.Update(); 
       MessageBox.Show("Delete Succesfull"); 
      } 
      catch (System.Exception err) 
      { 
        dataGridView3.DataSource = dt; 
        dataGridView3.DataBind(); 
        dataGridView3.Update(); 

       this.label27.Visible = true; 
       this.label27.Text = err.Message.ToString(); 
      } 
     } 

    } 
+0

Этот код уязвим для инъекций SQL – JohnnBlade

+0

Просто мое личное мнение, но если сетка содержит da ta, который должен быть удален, я бы отменил логику: пользователь вводит текст, вы просматриваете соответствующую запись (записи) в своей сетке, выполняете удаление в db, а затем удаляете записи из привязки напрямую или из базовый источник данных. (добавлено преимущество в том, что вы также можете иметь действие удаления непосредственно в выбранных строках) –

ответ

0

Bind сетка снова извлечь значения формируют базы данных после добавления, обновления и удаления и т.д.

private void btnDelete_Click(object sender, EventArgs e) 
{ 

    if (txtIDD.Text == "") 
    { 
     MessageBox.Show("Please fill ID no. of record to Delete", "Important Message"); 

    } 
    else 
    { 
     try 
     { 
      OleDbCommand Cmd = new OleDbCommand(); 
      Cmd.Connection = conn; 
      conn.Open(); 
      Cmd.CommandText = "DELETE FROM AddressBook WHERE ID="+txtIDD.Text; 
      Cmd.CommandType = CommandType.Text; 
      Cmd.ExecuteNonQuery(); 
      Cmd.Connection.Close(); 
      conn.Close();     

      **//Call a method that binds the grid or get DataTable from database and bind it like this** 
      dataGridView3.DataSource = dt;    
      dataGridView3.Update(); 

      MessageBox.Show("Delete Succesfull"); 
     } 
     catch (System.Exception err) 
     { 
      this.label27.Visible = true; 
      this.label27.Text = err.Message.ToString(); 
     } 
    } 
} 
+0

эй, я делаю приложение windows. Databind() не работает там :(он дает ошибку, что ссылка на ссылку на использование или сборку отсутствует –

+0

Удалить DataBind() присвоение источника данных достаточно, но получить последние данные перед назначением на источник данных – Adil

+0

я использовал эту функцию для получения обновленных данных :)))) его рабочий штраф –

-2

Создайте функцию, в котором вы можете перегрузить сетку

private method ReloadGrid() 
{ 
    // first load your datatable/dt then set it as the datasource of your grid 
    dataGridView3.DataSource = dt; 
    dataGridView3.DataBind(); 

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