1

よし、紳士、

vb.netコンボボックスでアイテムを検索しようとしています。コンボボックスはすでにデータセットにバインドされています。表示メンバーは、選択したレコードの1列だけを表示するように設定されています。コンボに表示されるオブジェクトがカスタマイズされたクラスになるように、最初に設定しました。このクラスでは、追跡したいすべてのプロパティを指定しましたが、それはうまく機能しているようです。ただし、バインドされた状態でコンボボックスを使用しているため、データを操作するのははるかに困難です。

ミッション:ユーザーに番号を入力させるには、番号がComboBoxに含まれている場合、コンボボックスはそのレコードに移動して、そのコントロールにバインドされている他のすべてのアイテムも更新されるようにする必要があります。

調査:System.Windows.Forms.BingingManagerBaseクラスを調べましたが、必要な情報が含まれているようです。それと私がやろうとしていることとの間の架け橋を理解することはできません。何かをまとめたいので、コンボボックス内のテキストのデータセットに対してSQL検索を実行しようとしました。残念ながら、これには遅延バインディングが必要であり、ターゲットバージョンの.NetCompactFrameworkはそれをサポートしていません。

これが私が試みていた遅延バインディングの例です。(私はVB.net 2005、CompactFramework3.5を使用しています。

For i as integer = 0 to combobox.items.count - 1 

    dim Dsr as Dataset.Row  
    dim dv as dataview

    Dsr = DirectCase(Dv.row, Dataset.Row) 

    If Dsr(i).DesiredColumn = DesiredRow.Desiredcolumn then 
    'Do such and such code
    End If 

Next 

クエリに一致する特定のレコードをデータセットで検索できるようにしたい。クエリに一致する行を見つけたら、コンボボックスをSQLクエリで見つかった行に移動できるようにします。主な問題は、コンボがDatarowviewsで機能し、私のデータセットが主にDSに関連する行にキャストされることです。

誰もがこれについていくらかの洞察を持っているので、それは大いにありがたいです。

再度、感謝します!

4

2 に答える 2

0

コンボボックスで選択されたものとして設定する必要がある項目がわかっている場合は、ComboBox.SelectedItemプロパティを設定するだけです。

実際にコンボボックスにバインドされているすべてのアイテムをループする必要がある場合は、正しいアイテムに到達したら、ComboBox.SelectedIndexプロパティを設定できます。

于 2012-09-10T15:05:40.840 に答える
0
For i As Integer = 0 To ComboBox.Items.Count - 1
                Dim drv As System.Data.DataRowView = Nothing
                Dim desiredColumn As String = String.Empty

                drv = DirectCast(ComboBox.Items.Item(i), DataRowView)
                desiredColumn = Convert.ToString(drv("Tag"))

                Debug.WriteLine(desiredColumn)
            Next

これにより、コンボボックス内のすべてのレコードの列値が検出され、検索しているテキストの正しいインデックスを見つけることができます。とはいえ、私が言ったように、コンボボックス内のアイテムのリストを、それぞれに対処することなく検索する方法を見つけることができれば、ありがたいです。

于 2012-09-11T02:13:02.053 に答える