Winforms TextBox以货币格式绑定到BindingSource,并且DataGridView无法正确刷新



我有点新的,bindingsources和datagridViews(以及vb .net),所以这是我的问题/问题。

我正在为VB 2010中的一个应用程序编程,在该应用程序中,用户将在后端更新SQL 2008 R2服务器中的数据(他们不会添加或删除任何记录,而并非所有字段都会更新)。设计模式中的表单具有bindingsource,数据集和数据的各种文本框以及表单底部的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")

i将bindingsource绑定到数据集...

With frmBindingSource
    .DataMember = "test_table"
    .DataSource = frmDataSet
End With

i然后将表单上的dataGridView绑定到bindingsource ...

frmDataGridView.DataSource = frmBindingSource

现在,在" test_table" db表中,某些字段是货币,未更新的用户,因此我将其绑定如下...

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

现在是问题...

用户使用DataGridView在记录中移动,该记录无问题。我们遇到麻烦的地方是"总"字段可以是" null",如果用户在" Total"字段中以" null"命中记录,则它不会在该字段的"绑定文本"框中空白,它仅在有"非零"值时会更改。

因此,如果用户启动,并且前三个记录在"总计"字段中具有" null"字段,则该字段的文本框保持空白。如果第四个记录具有值,则字段的文本框会更改为该值,但是如果它们回到了记录,则该字段中的文本框中的值并不空白,但要保留该值,并将值保持在找到不同的"非零"值。

但是,如果我在这样的绑定过程中删除格式...

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

一切正常。

我在这里做错了什么,我忽略了忘记的简单事情,我该如何修复它,因为我真的想在表单上正确地格式化。

找到了问题的答案...(连续工作了几十小时后帮助入睡)

如果我更好地阅读文档,我会知道我的数据绑定行中更改" 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查询。

相关内容

最新更新