我目前在绑定到访问数据库的VB.NET中创建一个WinForm。从DataBound控件更新数据库
基本上我有两种形式:一种是用于搜索数据库的搜索表单,另一种是详细信息表单。您在searchForm上运行搜索,并返回主键和其他一些标识值的列表。然后双击要查看的条目,并加载详细信息表单。
“详细信息”表单具有一组数据绑定控件以显示数据:主要是文本框和复选框。我设置它的方式是我使用UI来构建表单,然后将每个控件的DataBindings属性设置为“TblPropertiesBindingSource - ”,其中值名称是表中的值之一(例如PropertyID或HasWoodFloor)。
然后,当你双击在searchform的条目,我通过分析主键(物业ID)从所选行,然后这个存储的细节处理事件形成:
注:细节决定细节形成被打开,显示信息
Private Sub propView_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles propView.CellDoubleClick
Dim detail As frmPropertiesDetail = New frmPropertiesDetail
detail.id = propView.Rows(e.RowIndex).Cells(0).Value
detail.Show()
End Sub
然后,在加载的细节构成,其设置是在BindSource过滤器这样:
TblPropertiesBindingSource.Filter() = "PropertyID=" & id
目前为止效果很好。详细信息表单上的所有控件都将显示正确的信息。问题是更新更改。
场景: 如果我有用户加载say,property 10001的详细信息,它将在名为descriptionBox的文本框中显示一个描述,该描述与数据库中该条目的描述值的值相同。然后,我希望用户能够更改文本框的文本(他们当前可以执行的操作),然后单击保存按钮(saveBut),并让表单将控件中的所有值更新到数据库。
理论上,它应该这样做,因为控件是DataBound,因此我可以避免编写代码来告诉数据库行中的每个条目采用对齐控件的值。
我试着调用PropertiesTableAdapter.Update(PropertiesBindingSource.DataSource),但似乎并没有这样做。