2013-11-25 85 views
0

我正在使用DevExpress XtraGrid/View for windows窗體。網格的數據源是一個綁定源,它連接到一個數據集。我的問題是,這個表適配器不會更新數據表。我可以插入新行而沒有問題,但我無法更新。沒有錯誤消息被拋出;當我保存更改時,行值就會恢復。這發生在行中的每一列。這是我救了,然後重裝數據代碼:GridView不更新DataTable

  ' Class variable 
      Private _invoiceDetailsAdapter As dsInvoiceDetailsTableAdapters.inv_InvoiceDetailsTableAdapter = New dsInvoiceDetailsTableAdapters.inv_InvoiceDetailsTableAdapter() 

      'Save Data 
      InvInvoiceLineBindingSource.EndEdit() 
      _invoiceDetailsAdapter.Update(DsInvoiceDetails.inv_InvoiceDetails) 

      'Load 
      DsInvoiceDetails.inv_InvoiceDetails.Clear() 
      If Me._invoiceId > 0 Then 
       _invoiceDetailsAdapter.Fill(DsInvoiceDetails.inv_InvoiceDetails, _invoiceId) 
       InvInvoiceLineBindingSource.Sort = "LineNum" 
      End If 

我已經想通了,它必須是該數據集本身,因爲我使用的是常規的DataGridView與數據集試過了,沒有用。我通過嚮導生成了數據集,並且必須在插入&更新的參數中添加ColumnName和SourceColumn屬性。就屬性而言,插入&更新的參數看起來完全相同。

我也試過創建新的數據集,數據表,綁定源和表適配器。我甚至嘗試過DataAdapter,但沒有任何區別。我現在已經花了2周時間瀏覽了屬性和調試,試圖找到一個原因。

有人可以提供一些建議嗎?

+0

似乎在進行更改後移動到一個新行時,它纔會更新。如果我不更改行,它不會更新,因此我可以插入。最奇怪的事情,很可能是一些其他地方的錯誤。還在尋找。讓我知道如果你有什麼我可以嘗試。 – Paul

回答

0

問題是DevExpress的XtraGrid功能。

The XtraGrid does not immediately save an edit value to the linked dataset. The modified row is usually posted to the data object when focus is moved to another grid row. You can programmatically force the update by calling the UpdateCurrentRow method. In your case you should only call the CloseEditor and UpdateCurrentRow methods before updating the dataset via the DB adapter object.

因此,如果用戶只更新只有一排,這些變化去行不通的。閱讀的代碼片段...

http://www.devexpress.com/Support/Center/Question/Details/A327