我有一個DataGridView由數據庫中的表的DataSet組成。當我刪除一行時,它會在數據庫中更新,但不會從GridView中刪除。只有當我重新啓動應用程序時,它纔會從GridView中移除。Datagridview不更新/刷新
請幫忙
我有一個DataGridView由數據庫中的表的DataSet組成。當我刪除一行時,它會在數據庫中更新,但不會從GridView中刪除。只有當我重新啓動應用程序時,它纔會從GridView中移除。Datagridview不更新/刷新
請幫忙
這是一個非常簡單的過程。
1)創建綁定源
2)設置DataSource該對象到您的數據集表。
3.)將DatagridView的數據源設置爲綁定源對象。
代碼示例:現在
Dataset ds = new Dataset();
BindingSource bs = new BindingSource()
bs.Datasource = ds.Table[0];
DatagridView.Datasource = bs;
,您在數據表中所做的任何更改將通過對你的GridView自動紋波。
DataGrid中我怎麼能做到同樣的事情? – tpbafk
希望這對你有幫助嗎?
如果您在dgv中顯示您的表,並且從該表中刪除了某些內容,則您的勝出表單上有一個按鈕。你選擇了我們說的ID並點擊「刪除」按鈕從數據庫表中刪除一個項目。這裏是代碼:
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沒有被更新。我嘗試使用更新方法,但不起作用:/ – user966614
此外,當您按下「INSERT」或「ADD」進入表格按鈕時,您需要重新載入表格(再次通過此選擇* from .... )。而且,每當你改變你的桌子時,你都需要這樣做! – Sylca
您必須在每次刪除(重新綁定網格)後調用此函數。
void BindGrid()
{
YourDataGridView.DataSource = dataset;
YourDataGridView.DataBind();
}
WindowsForms中沒有'DataBind()'。 –
您需要重置bindingsource上的綁定。
bindingSource.ResetBindings(false);
爲我工作。謝謝! –
如果更新數據庫,並要刷新的DataGridView,稱之爲:
this.<table name>TableAdapter.Fill(this.<DB name>DataSet.<table name>);
例如:哪裏是你的表的名稱(例如客戶),併爲你的數據庫的名稱(例如MYDB) 。
this.CustomersTableAdapter.Fill(this.MyDBDataSet.Customers);
注意:這個答案假定DataGridview是一個簡單的單獨的獨立的,沒有父DataGridview(相關表)。當然這對於原始問題是可以的。 否則,需要使用所需的外鍵填充方法, – gg89
您的意思是說,當您再次打開您的應用程序時,只有您看到DataGridView中的更改? –
請您找到答案[這裏](http://stackoverflow.com/a/9307232/447704) –