2010-10-26 115 views
1

我有datagridview的連接到我的數據庫(訪問)如何更新datagridview中的單元格?

,如果我留在任一單元格,然後更改值,看到該值被改變

但是當我使刷新我看到值回到原始值。

我怎麼可以更新此細胞(無SQL查詢)

我綁定數據集的DataGridView這樣的:

dsView = new DataSet(); 
      adp = new OleDbDataAdapter("SELECT * FROM Items", Conn); 
      adp.Fill(dsView, "Items"); 
      this.dataGridView1.DataSource = dsView.Tables["Items"].DefaultView; 
      adp.Dispose(); 

拜託,我必須找到如何做到這一點.....

感謝提前

+0

您必須提供綁定的對象更好的細節以及您實際上在不去數據庫的情況下嘗試更新的內容。 – leppie 2010-10-26 10:51:55

回答

4

如果你的datagridview連接到數據庫,你不想使用SQL,我可以假設它是綁定到數據源。如果您通過Visual Studio Designer執行此操作,則應該有TableAdapter(如果自動生成,可能稱爲YOURTABLENAMETableAdapter)和BindingSource(如果自動生成,可能稱爲YOURTABLENAMEBidingSource)。

要更新數據庫,您必須調用BindingSource.EndEdit()然後TableAdapter.Update()。完成此操作後,您可以刷新數據。

編輯

現在您提供更好的信息,我可以給你一個更好的答案。 在我之前的回答中,我假定你已經用設計器創建了所有東西,因爲你不想使用SQL來進行更新。顯然我錯了。

爲了達到您的要求,您應該使用OleDbCommandBuilder類,只要給出SELECT命令,就會自動爲您的表生成簡單的編輯命令(插入/更新/刪除)。

這裏是使用你的代碼的例子:

dsView = new DataSet(); 
adp = new OleDbDataAdapter("SELECT * FROM Items", Conn); 
OleDbCommandBuilder cb = new OleDbCommandBuilder(adp); 
adp.Fill(dsView, "Items"); 
this.dataGridView1.DataSource = dsView.Tables["Items"].DefaultView; 
//adp.Dispose(); You should dispose you adp only when it is not loger needed (eg: after performing the update) 

現在,你perfomed更改的數據後,你可以調用

adp.Update(dsView, "Items"); 
+0

我試試這個:dataGridView2.EndEdit(); dataGridView2.Update();但它不工作 – Gold 2010-10-26 11:22:34

+0

不,這是錯誤的。你必須使用綁定的對象。在你的代碼的某個地方有分配dataGridView.DataSource = somethingBindingSource(可能在form.Designer.cs文件中),那就是你的BindingSource(調用EndEdit()的那個)。您還可以找到一個表格適配器來調用更新。你是如何執行datagrid和你Db之間的綁定的? – 2010-10-26 12:45:10

+0

我還是不明白,我更新我的問題 - 我如何處理數據庫 – Gold 2010-10-26 19:01:33

相關問題