访问数据绑定组合框c#

时间:2017-02-16 13:25:23

标签: c# .net winforms combobox selectedvalue

我遇到了一个组合框控件的问题。从数据库中检索项目,但不允许我通过 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是一个匿名对象,我无法访问这些字段!

任何帮助?

1 个答案:

答案 0 :(得分:2)

您应该将ComboBox绑定到DataTable对象而不是DataSet。 宾语。这将解决你的目的。另外,请确保DropDownStyle属性设置为DropDownList。 (这样,用户被迫从列表中选择一个值而不是键入。)

myComboBox.DataSource = ds.Tables[0];