1

何が起こっているのか少し毛むくじゃらの説明を前もってお詫びします。私は自分が何をしたかをかなり確信していますが、適切な用語がわからないだけです。明確化のご要望には、できる限り早急に対応できるよう最善を尽くします。

データベースの「Customers」テーブルをクエリしているアプリケーションにデータバインドクエリがあります。これは、デザインビューのComboBoxのデータソース作成者から直接作成しました。

デザイナで作成されるさまざまなコードには、次のものがあります。

Me.CustomerBindingSource.DataSource = Me.CustomerDataSet
Me.ComboBox_Customers.DataSource = Me.CustomerBindingSource

この機能の開発の最初の段階で行ったことは、BindingSourceにフィルターを適用することにより、顧客リストの特定のサブセットを表示するComboBoxをユーザーに表示することです。

Me.CustomerBindingSource.Filter = "someColumn = 3"

2番目のパスで実行したいのは、ユーザーが特定の情報をテキストボックスに入力して、そのように表示されるかどうかを確認できる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オブジェクトがあります。Me.ComboBox_CustomersこのcustomerRowオブジェクトが、フィルター処理されたを介してユーザーに表示されるリストに表示されるかどうかを確認したいと思いますMe.CustomerBindingSourceMe.CustomerBindingSource(直接)オブジェクトを含まず、customerRowオブジェクトを含みObjectます。

Me.CustomerBindingSource下位レベルにcustomerRowオブジェクトが含まれているかどうかを確認するにはどうすればよいですか?

また

アイテムが含まれていると判断したらMe.CustomerBindingSource、ComboBoxでそのエントリを選択するにはどうすればよいですか?

4

1 に答える 1

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もかかわらず、それらはすべてタイプのオブジェクトであり、プロパティを持っているためです。このプロパティには、のLINQクエリから既に取得したオブジェクトが含まれています。Me.CustomerBindingSourceObjectDataRowViewRowDataRowMe.CustomerDataSet

誰かがこの質問に対する答えをForループよりも素晴らしいものがあれば、私はそれらを学びたいと思います。

于 2012-04-27T08:48:55.897 に答える