我遇到了一个组合框控件的问题。从数据库中检索项目,但不允许我通过 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是一个匿名对象,我无法访问这些字段!
任何帮助?
答案 0 :(得分:2)
您应该将ComboBox绑定到DataTable
对象而不是DataSet
。
宾语。这将解决你的目的。另外,请确保DropDownStyle
属性设置为DropDownList
。 (这样,用户被迫从列表中选择一个值而不是键入。)
myComboBox.DataSource = ds.Tables[0];