我有点新的,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查询。