2016-07-29 4 views
0

ステータスとステータスIDを持つデータソース "StatusListBindingSource"にバインドされたコンボボックスがあります。見つかったアイテムのインデックスが必要です。私は、各ループ/のために使用しない以外これがうまく動作しMe.cmbResult.SelectedIndexオブジェクト値を使用してコンボボックスアイテムのインデックスを検索

を設定するために、インデックスを使用します:

Private Sub SetStatusIndex(ByVal StatusValue As Integer) 
    Dim ItemIndex As Integer = -1 
    Dim ct As Integer = 0 
    For Each dView As DataRowView In Me.cmbResult.Items 
     If dView.Row.Item("StatusID") = StatusValue Then 
      ItemIndex = ct 
      Exit For 
     End If 
     ct += 1 
    Next 
    Me.cmbResult.SelectedIndex = ItemIndex 
End Property 

は、ここで私がやりたいものだ:

Dim a As ComboBox.ObjectCollection = Me.cmbResult.Items 

'can't cast like this 
Dim lisDRView As List(Of DataRowView) = a.Cast(Of DataRowView)() 

'I'd like to use something like .find 
Dim drView As DataRowView = lisDRView.Find(Function(x) x.Row.Item("StatusID") = StatusValue) 

'there is no drView.index so this fails 
Me.cmbResult.SelectedIndex = drView.index 

しかし、私はa.Cast(Of DataRowView)()上の例外を取得していますし、もちろん無効一切drView.index

はありませんキャスト例外: タイプ 'd__aa'1 [System.Data.DataRowView]' ' を' System.Collections.Generic.List`1 [System.Data.DataRowView] 'と入力するとキャストできません。

Findを使用して、指定されたStatusValueを持つアイテムのインデックスを取得するにはどうすればよいですか?

答えて

0

これは動作します:how to get the all combobox item .... using array

から

Dim lis As List(Of DataRowView) = _ 
     (From item As DataRowView In cmbResult.Items Select item).ToList 
Dim d = lis.Find(Function(x As DataRowView) x.Row.Item("StatusID") = StatusValue) 
Me.cmbResult.SelectedItem = d 

を支援

関連する問題