vb.net - : '不能绑定到新的值成员。参数名称:value' vb.net 以及如何使用组合框中的值
问题描述
我正在尝试将数据库中的一些项目放入我的第三个组合框,对于前两个,没有问题,但是在尝试填充最后一个时我遇到了一个。这是错误消息:
: '不能绑定到新的值成员。参数名称:值'
此外,如果有人知道我如何使用从 RoomNumber 组合框中的 RoomType 组合框中选择的值来仅根据房间类型中选择的值显示数据。My Booking 表和 Room 表通过它们的主键与 BookedRooms 表链接。
Private Sub FrmBookings_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim connectionstring As String = "Data Source=dbNEAProject.db"
Dim ds As New DataSet
Using con As New SQLiteConnection(connectionstring),
cmd As New SQLiteCommand("SELECT * FROM BOOKING INNER JOIN customers ON customers.customerID = booking.BCustomerID", con)
con.Open()
Dim da As New SQLiteDataAdapter(cmd)
da.Fill(ds, "booking")
dt = ds.Tables(0)
con.Close()
Dim msSQL As String = "SELECT * FROM booking INNER JOIN customers ON customers.customerID = booking.BCustomerID;"
DgvBookings.DataSource = display(msSQL, "customers")
Dim strArray = dt.AsEnumerable().[Select](Function(x) x.Field(Of String)("fname")).ToArray()
txtBsearchFname.AutoCompleteSource = AutoCompleteSource.CustomSource
Dim MySource As New AutoCompleteStringCollection()
MySource.AddRange(strArray)
txtBsearchFname.AutoCompleteCustomSource = MySource
txtBsearchFname.AutoCompleteMode = AutoCompleteMode.SuggestAppend
Try
dt = New DataTable
con.Open()
With cmd
.Connection = con
.CommandText = "SELECT DISTINCT customers.fname FROM booking INNER JOIN customers ON customers.customerID = booking.BCustomerID"
End With
da.SelectCommand = cmd
da.Fill(dt)
Dim r As DataRow
txtBsearchFname.AutoCompleteCustomSource.Clear()
For Each r In dt.Rows
txtBsearchFname.AutoCompleteCustomSource.Add(r.Item(0).ToString)
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
con.Close()
da.Dispose()
Using con1 As New SQLiteConnection(ConStr)
Using com As New SQLiteCommand("Select CustomerID, fname FROM customers Left JOIN BOOKING ON booking.BCustomerID = customers.customerID where booking.BookingID is null", con1)
con1.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cmbCustomerData.DataSource = dt
cmbCustomerData.DisplayMember = "fname"
cmbCustomerData.ValueMember = "CustomerID"
End Using
End Using
Using con1 As New SQLiteConnection(ConStr)
Using com As New SQLiteCommand("Select RoomTypeName, RoomTypeID FROM RoomType INNER JOIN ROOMS ON rooms.rRoomTypeID = roomType.RoomTypeID ", con1)
con1.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cmbRoomType.DisplayMember = "RoomTypeName"
cmbRoomType.ValueMember = "RoomTypeID"
cmbRoomType.DataSource = dt
End Using
End Using
Using con1 As New SQLiteConnection(ConStr)
Using com As New SQLiteCommand("Select RoomNumber, RoomID FROM rooms", con1)
con1.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cmbRoomType.DisplayMember = "RoomNumber"
cmbRoomType.ValueMember = "RoomID"
cmbRoomType.DataSource = dt
End Using
End Using
End Sub
Private ConStr As String = "Data Source=dbNEAProject.db"
解决方案
这是因为您将数据绑定到组合框的顺序搞砸了
Using con1 As New SQLiteConnection(ConStr)
Using com As New SQLiteCommand("Select CustomerID, fname FROM customers Left JOIN BOOKING ON booking.BCustomerID = customers.customerID where booking.BookingID is null", con1)
con1.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cmbCustomerData.DataSource = dt
cmbCustomerData.DisplayMember = "fname"
cmbCustomerData.ValueMember = "CustomerID"
End Using
End Using
您的第一次使用很好,因为您指定数据源,然后使用 DisplayMember。但是在下一个中,您使用 displaymember 并将数据的源指定为最后一项。这就是为什么它不起作用。
Using con1 As New SQLiteConnection(ConStr)
Using com As New SQLiteCommand("Select RoomTypeName, RoomTypeID FROM RoomType INNER JOIN ROOMS ON rooms.rRoomTypeID = roomType.RoomTypeID ", con1)
con1.Open()
Dim dt As New DataTable()
dt.Load(com.ExecuteReader)
cmbRoomType.DisplayMember = "RoomTypeName"
cmbRoomType.ValueMember = "RoomTypeID"
cmbRoomType.DataSource = dt
End Using
End Using
正确的顺序是:
combobox.Datasource --> combobox.DisplayMember -->combobox.ValueMember
但是正如@Jimi 在评论中指出的那样-您在下面的代码中使用了相同的组合框。如果你想使用相同的组合框,你应该使用清除你的实际数据源
cmbRoomType.DataSource = Nothing
其次是
cmbRoomType.Items.clear()
然后你可以再次使用它。但我想这不是你想做的。
推荐阅读
- c# - 发送半个身体后,WireMock 失败
- php - 我想在 php 中将图像上传到同一服务器上的不同目录中
- javascript - Discord.js 检查消息中的用户提及
- kotlin - kotlin 对 int 的可为空引用的相等性测试
- powershell - 有没有办法将 .der 证书导出到 .bin 文件?
- python - TensorFlow 2.0 - 实现简单 CNN 的初学者
- javascript - 为什么 ReactJS 中一个组件的 css 文件与另一个组件的 css 文件交互?如何处理?
- opengl-es - WebGL 着色器变量
- ruby-on-rails - 使用 ruby on rails 实现特定功能:允许用户逐行编辑其他用户的文本
- python - 如何更改python字典中的日期格式(键)