我有一个由数据库中的表的DataSet组成的DataGridView。当我删除一行时,它会在数据库中更新,但不会从GridView中删除。只有当我重新启动应用程序时,它才会从GridView中删除。
请帮忙
答案 0 :(得分:16)
您需要重置绑定源上的绑定。
bindingSource.ResetBindings(false);
答案 1 :(得分:8)
这是一个非常简单的过程。
1。)创建绑定源
2.。)将此对象的数据源设置为数据集表。
3.。)将DatagridView的数据源设置为绑定源对象。
代码示例:
Dataset ds = new Dataset();
BindingSource bs = new BindingSource()
bs.Datasource = ds.Table[0];
DatagridView.Datasource = bs;
现在,您在DataTable中所做的任何更改都会自动波及到您的GridView。
答案 2 :(得分:0)
希望这对你有帮助吗?
如果您在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数据库,但不要为此烦恼。
答案 3 :(得分:0)
如果更新了数据库并且您想刷新DataGridView,请调用:
this.<table name>TableAdapter.Fill(this.<DB name>DataSet.<table name>);
例如:表的名称(例如Customers)在哪里,并且是数据库的名称(例如MyDB)。
this.CustomersTableAdapter.Fill(this.MyDBDataSet.Customers);
答案 4 :(得分:-3)
每次删除后都必须调用此函数(重新绑定网格)。
void BindGrid()
{
YourDataGridView.DataSource = dataset;
YourDataGridView.DataBind();
}