如何查找过滤后的BindingSource是否包含基础DataSet中的项?

时间:2012-04-25 11:38:47

标签: .net vb.net linq combobox bindingsource

提前道歉,对于发生的事情进行了略微愚蠢的描述。我很清楚我做了什么,我只是不确定正确的术语。我会尽快回复任何澄清请求。

我的应用程序中有一个数据绑定查询,它查询数据库中的“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_CustomersMe.CustomerBindingSource中的用户显示的列表中。 Me.CustomerBindingSource没有(直接)包含customerRow个对象,它包含Object个对象。

如何确定Me.CustomerBindingSource是否包含任何较低级别的customerRow对象?

另外

一旦我确定Me.CustomerBindingSource包含该项目,我该如何在ComboBox中选择该条目?

1 个答案:

答案 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循环更令人敬畏,我很乐意学习它们。