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