Datagridview не обновляется/обновляется
У меня есть DataGridView из набора данных таблицы из БД. Когда я удаляю строку, она обновляется в базе данных, но не удаляется из GridView. Только когда я перезапустить приложение, оно удаляется из таблицы.
пожалуйста, помогите
5 ответов
Это очень простой процесс.
1.) Создайте источник привязки
2.) Установите источник данных для этого объекта в таблицу Dataset.
3.) Задайте источник данных для DatagridView в качестве объекта источника привязки.
Пример Кода:
Dataset ds = new Dataset();
BindingSource bs = new BindingSource()
bs.Datasource = ds.Table[0];
DatagridView.Datasource = bs;
теперь любые изменения, внесенные в DataTable, будут автоматически передаваться в ваш GridView.
надеюсь, это поможет вам?
Если вы показываете свою таблицу в dgv и для удаления чего-то из этой таблицы у вас есть кнопка в форме win. вы выбрали, скажем, ID и нажмите кнопку "Удалить" для удаления элемента из таблицы db. Вот этот код:
private void btn_Delete_Click(object sender, EventArgs e)
        {
            int selectedCellCount = dgv.GetCellCount(DataGridViewElementStates.Selected);
            if (selectedCellCount > 0)
            {
                string selection;
                for (int i = 0; i < selectedCellCount; i++)
                {
                    selection = dgv.SelectedCells[i].Value.ToString();
                    string qs_delete = "DELETE FROM yor_table WHERE id = '" + selection + "';";
                    try
                    {
                        conn = new MySqlConnection(cs);
                        conn.Open();
                        cmd = new MySqlCommand();
                        cmd.Connection = conn;
                        cmd.CommandText = qs_delete;
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show(ex.Message);
                        }
                        finally
                        {
                           if (conn != null) conn.Close();
                         }
                     }
                }    
//don't forget to load your table again in dgv
            string qs_select = "SELECT * FROM your_table";
            System.Data.DataTable dataTable = new System.Data.DataTable();
            dataTable.Clear();
            dgv.DataSource = dataTable;
            try
            {
                conn = new MySqlConnection(cs);
                cmd = new MySqlCommand(qs_select, conn);
                conn.Open();
                da = new MySqlDataAdapter(cmd);
                da.Fill(dataTable);
                cb = new MySqlCommandBuilder(da);
                dgv.DataSource = dataTable;
                dgv.DataMember = dataTable.TableName;
                dgv.AutoResizeColumns();
                conn.Close();
            }
            catch (Exception ex)
            {
                 MessageBox.Show(ex.Message);
            }
            finally
            {
                if (conn != null) conn.Close();
            }
         }
вы заметите здесь, что у меня есть MySQL db, но не беспокойтесь об этом.
Если база данных обновлена и вы хотите обновить DataGridView, вызовите это:
this.<table name>TableAdapter.Fill(this.<DB name>DataSet.<table name>);
например: где имя вашей таблицы (например, клиенты) и имя вашей базы данных (например, MyDB).
this.CustomersTableAdapter.Fill(this.MyDBDataSet.Customers);
вы должны вызывать эту функцию после каждого удаления (сетка повторной привязки).
void BindGrid()
{
YourDataGridView.DataSource = dataset;
YourDataGridView.DataBind();
}