如何在数据绑定组合框中选择值?

时间:2011-03-17 11:02:04

标签: vb.net data-binding combobox

我有一个ComboBoxDataView绑定了DataTable。此DataTable有三列。在DataView绑定到ComboBox之前,我添加了另一列并设置了一些值。

   Dim table As DataTable = _retrieve.GetAllVersionsTable()
    table.Columns.Add("FirstRow", GetType(Boolean))

    Dim row As DataRow = table.NewRow()
    row("ID") = -1
    row("SomeValue") = -1
    row("SomeText") = "N/A"
    row("FirstRow") = True 'Fort sorting...

    Dim view As DataView = New DataView(table)
    view.Sort = "FirstRow DESC, SomeText DESC"

    table.Rows.InsertAt(row, 0)

    comboBox.DataSource = view
    comboBox.ValueMember = "ID"
    comboBox.DisplayMember = "SomeText"

稍后,我检索相同的数据并创建一个新的DataTable并将其绑定到另一种形式的DataGridView。从这个表单中,我为DataGridView中选定行的标识列设置了一个值。

当我回到第一个表单时,使用ComboBox,我希望选择具有相同值的ComboBox行,我从第二个表单中设置,与ValueMember绑定1}}属性。我认为SelectedValue可以为此工作,但事实并非如此。我还可以做些什么?

comboBox.SelectedValue = myIdentityValue

由于行不同,我也不能使用SelectedItem。有没有办法可以选择合适的行而不必遍历所有现有的行?

4 个答案:

答案 0 :(得分:2)

根据MSDN:

  

SelectedValue:获取或设置值   由...指定的成员属性   ValueMember属性。

所以根据文档,做这样的事情应该有效,假设123是组合框中存在的ID,因为ID已被设置为ValueMember:

comboBox.SelectedValue = 123

如果你不能让它工作(也许用DataView绑定不能正常工作?),那么你可以使用总是有效的SelectedIndex。

答案 1 :(得分:0)

对于遇到这个话题的人来说,有像Zolom或我一样的问题。我想我找到了一个没有记录的重要事项:

您必须将相同的数据类型传递给.SelectedValue。如果不是,搜索将在没有任何提示的情况下失败。

假设您使用数据库填充DataSource,并且让整数作为value-field,您必须将整数传递给SelectedIndex。如果是字符串,则传递一个字符串。

我希望这会有所帮助......

答案 2 :(得分:0)

您可以在设置之前解决设置为 Nothing 属性数据源的问题 数据源:

Combobox.datasource=nothing
Combobox.DisplayMember="Data";
Combobox.ValueMember="ID";
Combobox.datasource = NewDataTable;
Combobox.SelectedValue = 4;

答案 3 :(得分:-2)

使用Combobox.text=""。它会自动将selectedvalue属性更改为您输入的文本。