访问数据绑定组合框c#
问题描述:
我有一个组合框控件的问题。项目从数据库中检索,但它不会让我通过SelectedValue属性访问它。访问数据绑定组合框c#
我试图将其设置是这样的:
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
。 (通过这种方式,用户被迫从列表中选择一个值而不是打字。)
myComboBox.DataSource = ds.Tables[0];
+0
您救了我!我不知道它的功能如此... – dzenesiz
要知道为什么第一个例子不起作用,这将是有趣的。第二个不能使用SelectedValue,因为没有绑定DataSource。另请参见http://stackoverflow.com/questions/14379183/combobox-selectedvalue-throws-null-reference-exception – Steve
@Steve,因为那么框中的文本是:'System.Data.DataViewManagerListItemTypeDescriptor' – dzenesiz