提前道歉,对于发生的事情进行了略微愚蠢的描述。我很清楚我做了什么,我只是不确定正确的术语。我会尽快回复任何澄清请求。
我的应用程序中有一个数据绑定查询,它查询数据库中的“Customers”表。我是在Design视图中直接从ComboBox的数据源创建者创建的。
设计器中创建的各种代码包括:
Me.CustomerBindingSource.DataSource = Me.CustomerDataSet
Me.ComboBox_Customers.DataSource = Me.CustomerBindingSource
我在开发此功能的第一阶段所做的是向我的用户显示一个ComboBox,通过对BindingSource应用过滤器来显示客户列表的特定子集。
Me.CustomerBindingSource.Filter = "someColumn = 3"
我想要在第二次传递中做的是允许用户在文本框中键入特定的信息,并检查它是否出现在Me.CustomerDataSet
中,如下所示:
Dim x As IEnumerable(Of CustomerDataSet.customerRow) = From cust In Me.CustomerDataSet.customer Where cust.custno.Trim = "test"
If x.Count <> 0 Then
实际问题
此时,我有一个customerRow
对象。我想检查此customerRow对象是否显示在通过已过滤的Me.ComboBox_Customers
向Me.CustomerBindingSource
中的用户显示的列表中。 Me.CustomerBindingSource
没有(直接)包含customerRow
个对象,它包含Object
个对象。
如何确定Me.CustomerBindingSource
是否包含任何较低级别的customerRow对象?
另外
一旦我确定Me.CustomerBindingSource
包含该项目,我该如何在ComboBox中选择该条目?
答案 0 :(得分:0)
我已经解决的答案是调用一个基本上做的函数:
For Each customerIn As DataRowView In Me.CustomerBindingSource
If customerIn .Row Is x(0) Then
Me.ComboBox_Customers.SelectedItem = customerIn
End If
Next
`Otherwise do nothing
因此我要查找的Is
比较为Me.CustomerBindingSource.Item(index).Row
,因为虽然Me.CustomerBindingSource
只包含Object
个对象,但它们都是DataRowView
类型的对象,它具有Row
属性,其中包含我已从DataRow
的LINQ查询中检索到的Me.CustomerDataSet
个对象。
如果有人对这个问题的答案比For
循环更令人敬畏,我很乐意学习它们。