访问数据绑定组合框 c#

Access databound combo box c#

组合框控件有问题。从数据库中检索项目,但它不允许我通过 SelectedValue 属性.

访问它

我试过这样设置:

DataSet ds = retrieveData(); //I am calling a procedure, it works fine
myComboBox.DataSource = ds;
myComboBox.DisplayMember = "COLUMN1";
myComboBox.ValueMember= "COLUMN2";

但这行不通。组合框中的文本是

System.Data.DataViewManagerListItemTypeDescriptor

所以我这样做了:

foreach (DataRow dr in ds.Tables[0].Rows)
    {
        myComboBox.Items.Add(
        new { TEXT = dr["COLUMN1"].ToString(), 
              VALUE = Convert.ToInt32(dr["COLUMN2"].ToString()) 
        });
    }

现在可以了。但我必须访问索引 (myComboBox.IndexOf("Text inside")) 而不是值(这是主键,因此保证是唯一的)。 SelectedValue 始终为 null,SelectedIndex 是一个匿名对象,我也无法访问这些字段!

有什么帮助吗?

您应该将 ComboBox 绑定到 DataTable 对象而不是 DataSet。 目的。那将解决您的目的。此外,确保 DropDownStyle 属性 设置为 DropDownList。 (通过这种方式,用户被迫 select 列表中的值而不是键入。)

myComboBox.DataSource = ds.Tables[0];