Datagridview没有更新/刷新

我有一个DataGridView由DB的表的DataSet组成。 当我删除一行时,它会在数据库中更新,但不会从GridView中删除。 只有当我重新启动应用程序时,它才会从GridView中删除。

请帮忙

这是一个非常简单的过程。

1.)创建绑定源

2.)将此对象的数据源设置为数据集表。

3.)将DatagridView的数据源设置为绑定源对象。

代码示例:

Dataset ds = new Dataset(); BindingSource bs = new BindingSource() bs.Datasource = ds.Table[0]; DatagridView.Datasource = bs; 

现在,您在DataTable中所做的任何更改都将自动波及到您的GridView。

您需要重置绑定源上的绑定。

 bindingSource.ResetBindings(false); 

希望这有助于你吗?

如果您在dgv中显示您的表格并从该表格中删除某些内容,您的胜利表格上会有一个按钮。 你选择了让我们说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数据库,但不要为此烦恼。

如果数据库已更新并且您要刷新DataGridView,请调用:

 this.TableAdapter.Fill(this.DataSet.
);

例如:表的名称(例如Customers)在哪里,是数据库的名称(例如MyDB)。

 this.CustomersTableAdapter.Fill(this.MyDBDataSet.Customers); 

每次删除后都必须调用此函数(重新绑定网格)。

 void BindGrid() { YourDataGridView.DataSource = dataset; YourDataGridView.DataBind(); }