在绑定的组合框中搜索用户输入

时间:2012-09-10 01:17:04

标签: vb.net data-binding combobox datarow late-binding

Alright Gents,

我试图在vb.net组合框中搜索某个项目。组合框已绑定到数据集。显示成员设置为仅显示所选记录的单个列。我最初设置了它,因此组合中显示的对象是一个自定义类。在这个课程中,我指定了我想要跟踪的所有属性,这似乎运作良好。但是现在我在绑定状态下使用组合框,操作数据要困难得多。

团: 要让用户键入一个数字,如果该数字包含在ComboBox中,则组合框应该移动到该记录,以便绑定到该控件的所有其他项也将更新。

研究: 我查看了System.Windows.Forms.BingingManagerBase类,它似乎有我需要的信息。我无法弄清楚那与我想做的事情之间的桥梁。我想把一些东西放在一起,所以我试着简单地对组合框中文本的数据集进行SQL搜索。不幸的是,这需要后期绑定,我的.Net紧凑框架的目标版本不支持。

这是我正在尝试的后期绑定的示例。 (我正在使用VB.net 2005,Compact Framework 3.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查询中找到的行。主要问题似乎是Combo在Datarowviews中工作,我的数据集主要被转换为与DS相关的行。

任何人都对此有一些了解,我将不胜感激。

再次感谢!

2 个答案:

答案 0 :(得分:0)

如果你知道应该在组合框中选择的项目,你可以设置ComboBox.SelectedItem Property

如果您确实需要遍历绑定到组合框的所有项目,那么一旦到达正确的项目,您可以设置ComboBox.SelectedIndex Property

答案 1 :(得分: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

这似乎找到了组合框中每条记录的列值,允许我找到我正在搜索的文本的正确索引。就像我说的那样,如果我能找到一种方法来搜索组合框中的项目列表而不必解决每个项目,我将不胜感激。