【发布时间】:2016-06-02 18:40:20
【问题描述】:
我正在尝试操作组合框以仅显示我希望从绑定源中获得的某些值。这是我目前拥有的代码。
provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
datafile = "C:\Users\Jacob\Desktop\Halton\HaltonProject.accdb"
connString = provider & datafile
myConnection.ConnectionString = connString
myConnection.Open()
Dim str As String
str = "SELECT * FROM [Employee] WHERE (SP_Level <> 0)"
Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
Dim dr As OleDbDataReader = cmd.ExecuteReader
Dim Full_Name As String
While dr.Read
Full_Name = dr("Full_Name").ToString
SP_Emp1.Items.Add(Full_Name)
SP_Emp2.Items.Add(Full_Name)
SP_Emp3.Items.Add(Full_Name)
SP_Emp4.Items.Add(Full_Name)
End while
就目前而言,此代码查看“SP_Level”并过滤掉其中列出“0”的所有员工。字符串“Full_Name”返回在“SP_Level”列中列为“0”以外的所有员工。
我想将组合框数据绑定到 EmployeeBindingSource,同时只显示由上面的代码生成的新过滤的“Full_Name”字符串。我尝试过滤绑定源,但只返回第一个匹配的字母字符串然后停止。我确定有一个简单的解决方案,我似乎找不到它
Access table used in data-binding
我对 VB 编程很陌生,因此如果措辞不当,我深表歉意。如果我能更好地解释什么,请告诉我。
【问题讨论】:
-
SP_Level 是字符串吗?没有理由将其连接起来。只是
WHERE (SP_Level <> 0)你的循环没有什么意义。 userFound 和 Full_Name 将只是循环中的最后一项,除非您没有向我们展示所有内容。 -
每一行代表一个新的过滤器
SP >0、PB >0等。您可以为每个条件创建不同的视图并绑定到它,而不是尝试让一个源来执行此操作。像这样的多种技能应该是一张自己的 1:m 表。 -
感谢 LarsTech 的提示。我已经修改了 OP 以显示我最初尝试过的内容,它确实以我希望的方式填充组合框,但显然它不能是数据绑定的,并且允许以编程方式更改值。 Plutonix - 没错,我必须为每个场景做这个过滤。我不确定我是否理解您的建议,我很抱歉
标签: .net vb.net data-binding combobox