簡體   English   中英

Winforms文本框綁定到具有貨幣格式和datagridview的綁定源未正確刷新

[英]Winforms Textbox bound to bindingsource with currency format and datagridview not refreshing properly

我對使用綁定源和datagridviews(以及VB .NET)進行編程有點陌生,所以這是我的問題。

我正在VB 2010中編寫一個應用程序,其中用戶將在后端的SQL 2008 R2服務器中更新數據(它們不會添加或刪除任何記錄,並且不會更新所有字段)。 設計模式下的表單在表單底部具有綁定源,數據集和數據的各種文本框以及datagridview。

加載表單時,先加載DataAdapter,然后再加載數據集。 (省略了連接的代碼,“ text_table”是SQL Server中的測試表。

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”數據庫表中,某些字段是貨幣,並且未更新,因此該字段會向用戶購買,因此我將它們綁定如下:

Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total", True, DataSourceUpdateMode.Never, vbNull, "c")

現在這是問題所在...

用戶使用DataGridView移動記錄,這沒有任何問題。 我們遇到麻煩的地方是“總計”字段可以為“空”,並且如果用戶在“總計”字段中命中帶有“空”的記錄,則該字段不會在該字段的綁定文本框中空白,它只有在存在“非空”值時才會更改。

因此,如果用戶開始使用,並且前三個記錄在“總計”字段中具有“空”,則該字段的文本框將保持空白。 如果第四條記錄具有值,則該字段的文本框將更改為該值,但是如果它們返回一條記錄,則該字段的文本框中的值不會為空,但會保留該值並將一直保留該值直到找到了不同的“非空”值。

但是,如果我這樣刪除綁定期間的格式...

Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total")

一切正常。

我在這里做錯了什么,我忽略了什么簡單的事情,忘記了,我該如何解決它,因為我真的很想在表單上正確設置此格式。

找到了問題的答案...(幫助您連續工作13天后能入睡)

如果我能更好地閱讀文檔,我會知道會更改數據綁定行中的“ vbNull” ...

Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total", True, DataSourceUpdateMode.Never, vbNull, "c")

只是成為vbNullString ...

Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total", True, DataSourceUpdateMode.Never, vbNullString, "c")

因此,當檢測到DBNull時,它將默認為“空白”(即vbNullString),無需更改有效的SQL查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM