1

好的绅士们,

我试图在 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 有关的行。

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

再次感谢!

4

2 回答 2

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 回答
0

如果您知道应在组合框中设置为选中的项目,则只需设置ComboBox.SelectedItem 属性

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

于 2012-09-10T15:05:40.840 回答