【发布时间】:2008-11-03 21:19:09
【问题描述】:
我目前正在 VB.NET 中创建一个绑定到访问数据库的 WinForm。
基本上我有两种形式:一种是用于搜索数据库的搜索表,另一种是详细信息表。您在 searchForm 上运行搜索,它会返回主键列表和一些其他标识值。然后双击要查看的条目,它会加载详细信息表单。
Details 表单有一组数据绑定控件来显示数据:主要是文本框和复选框。我设置它的方式是我使用 UI 构建表单,然后将每个控件的 DataBindings 属性设置为“TblPropertiesBindingSource -”,其中值名称是表中的值之一(例如 PropertyID 或 HasWoodFloor)。
然后,当您双击搜索表单中的条目时,我会通过解析所选行中的主键(PropertyID)然后将其存储到详细信息表单来处理该事件:
注意:详细信息是打开以显示信息的详细信息表单
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
到目前为止效果很好。详细信息表单上的所有控件都将显示正确的信息。问题是更新更改。
场景: 如果我让用户加载属性 10001 的详细信息,它将在名为 descriptionBox 的文本框中显示描述,该描述与数据库中该条目的描述值的值相同。我希望用户能够更改文本框的文本(他们目前可以这样做)并单击保存按钮 (saveBut) 并让表单将控件中的所有值更新到数据库中。
理论上,它应该这样做,因为控件是 DataBound,因此我可以避免编写告诉数据库行中的每个条目获取对齐控件的值的代码。
我尝试调用 PropertiesTableAdapter.Update(PropertiesBindingSource.DataSource),但似乎没有这样做。
【问题讨论】:
标签: vb.net winforms data-binding