我有點新的與bindingsources和datagridviews編程(以及VB .NET),所以這裏是我的問題/問題的BindingSource。的WinForms文本框綁定貨幣格式和datagridview的不刷新正確
我編程在2010年VB應用程序中,用戶會在後端一個SQL 2008 R2服務器更新數據(它們不會被添加或刪除的任何記錄,而不是所有的領域將被更新)。設計模式中的表單具有綁定源,數據集和數據的各種文本框以及表單底部的datagridview。
當表單加載時,加載DataAdapter並加載數據集。 (被省略, 「text_table」 連接代碼是在SQL服務器的測試表。
frmDataAdapter = New SqlClient.SqlDataAdapter(SQL_Query, frmConnection)
frmConnection.Open()
frmDataAdapter.FillSchema(frmDataSet, SchemaType.Source, "test_table")
frmDataAdapter.Fill(frmDataSet, "test_table")
我綁定的BindingSource到DataSet ...
With frmBindingSource
.DataMember = "test_table"
.DataSource = frmDataSet
End With
我然後綁定的DataGridView形式到BindingSource ...
frmDataGridView.DataSource = frmBindingSource
現在,在「TEST_TABLE」 DB表中的某些字段是貨幣,而不是更新的購買用戶,所以我將它們綁定如下...
Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total", True, DataSourceUpdateMode.Never, vbNull, "c")
現在,這裏的問題...
的用戶使用的DataGridView圍繞這正與沒有問題的記錄移動。我們遇到麻煩的地方在於「總計」字段可以是「空」,並且如果用戶在「總計」字段中擊中帶有「空」的記錄,它不會在該字段的綁定文本框中空白,它只會在有「非空值」時纔會改變。
因此,如果用戶在「總計」字段開始了與前三個記錄有一個「空」該字段的文本框保持空白。如果第四條記錄有一個值,則該字段的文本框將更改爲該值,但如果它們返回記錄,則該字段的文本框中的值不會空白,但會保留該值,並將保留該值直到找到不同的「非空值」。
但是,如果我喜歡這個結合過程中刪除格式...
Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total")
一切都運行完美。
什麼我錯在這裏做什麼簡單的事情我是遠眺忘了,我怎麼能解決這個問題,因爲我真的很想得到這個正確格式化的形式。
我沒有轉載這個,但聽起來像你可能需要利用Total_Amount變化事件來檢查空值或使用COALESCE函數編輯SQL查詢,因此數據源中沒有值爲null,它們都是'COALESCE (someColumn,0)' –
謝謝,我正在考慮這個問題,但是在我去之前修改了SQL代碼,我想確保我沒有做錯或失蹤的事情。 – ByerRA