我对使用 bindingsources 和 datagridviews(以及 VB .NET)进行编程有点陌生,所以这是我的问题/问题。
我正在用 VB 2010 编写一个应用程序,用户将在其中更新后端 SQL 2008 R2 服务器中的数据(他们不会添加或删除任何记录,也不会更新所有字段)。设计模式下的表单具有绑定源、数据集和数据的各种文本框以及表单底部的数据网格视图。
当表单加载时,会加载 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 来移动没有问题的记录。我们遇到麻烦的地方是“总计”字段可以为“空”,如果用户在“总计”字段中点击“空”的记录,它不会在该字段的绑定文本框中空白,仅当存在“非 Null”值时才会更改。
因此,如果用户开始并且前三个记录在“总计”字段中有“空”,则该字段的文本框保持空白。如果第四条记录有值,则该字段的文本框将更改为该值,但如果他们返回记录,则该字段的文本框中的值不会为空,而是保留该值并将保留该值,直到找到不同的“非空”值。
但是,如果我像这样在绑定过程中删除格式......
Me.Total_Amount.DataBindings.Add("Text", frmBindingSource, "Total")
一切都很完美。
我在这里做错了什么,我忽略了什么简单的事情忘记了,我该如何解决它,因为我真的很想在表格上正确格式化。