【发布时间】:2020-10-01 16:57:44
【问题描述】:
我正在尝试(新手)创建一个简单的应用程序,用户可以通过添加、删除或更新当前记录来更新 sql 数据库中的数据表。因此,我创建了表单并在其中有组合框,该组合框连接到我的数据库中的数据表。我想将所选记录的值加载到该组合框中,但也有可用于更新数据库中该记录的选项列表。我的代码的问题是,它具有正确的记录对应值,但没有显示。此外,当我选择组合框时,表中的其他值不存在。该值被复制了 2 次。
以下是组合框的绑定方式:
如何加载:
当我选择组合框时:
Public Sub FillDriverDataSet()
Dim sql As String
Dim dt As New DataTable
Dim ds As New DataSet
Dim dv = New DataView(ds.Tables("Drivers"))
Dim bs As New BindingSource
Dim cm As CurrencyManager
sql = "SELECT * FROM tCommercialDrivers where id = 23"
OpenConnection()
Dim adapter As New SqlDataAdapter(sql, connection)
Dim drivers As New SqlDataAdapter(sql, connection)
adapter.Fill(dt)
drivers.Fill(ds, "Drivers")
dv = New DataView(ds.Tables("Drivers"))
cm = CType(Me.BindingContext(dv), CurrencyManager)
bs.DataSource = dt
adapter.Fill(dt)
drpRouteType.DataSource = dt
drpRouteType.DisplayMember = "RouteType"
drpRouteType.ValueMember = "RouteType"
txtRoute.DataBindings.Clear()
txtRoute.DataBindings.Add("text", dv, "RouteID")
End Sub
【问题讨论】:
-
看起来你对所有这些数据集有点绕圈子。您还将数据访问方法与所有“按钮单击处理程序中的 SQL 字符串”以及您的数据表混合在一起。您应该只使用您的数据集和表格适配器来执行此操作,但目前尚不清楚您对这一切有多少纠结。如果您可以考虑发布整个项目,看看会有所帮助
-
好的,所以在阅读了你的笔记之后,我清理了代码(我认为)并且它可以工作
标签: vb.net data-binding combobox