[英]ComboBox remaining blank after selected value
我正在使用Windows窗体在C#中编写一个小型应用程序。 我有一个组合框,我通过查询数据库以获取列名称作为组合框内的值来进行填充。 我的代码当前可以很好地获取值,但是,每当我单击组合框时,它都会删除所有文本,并仅显示空白的“选定选项”。 我尝试了多种方法来纠正此问题(将数据库字段从char
更改为varchar
),尝试绑定到其他数据集等,但是没有任何效果。 Ive还查看了其他文章,例如C#comboBox数据绑定-什么也没发生,然后又变回空白
下面是我的代码,我相信我在displaymember / valuemember部分做错了,但是我不明白那是错的。 数据库中的列名是Reason,由3个值组成。 任何帮助表示赞赏。
String ConnString = ConfigurationManager.ConnectionStrings["Portal1"].ConnectionString;
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
SqlCommand sc = new SqlCommand("select [Reason] from tblReasons", conn);
SqlDataReader reader;
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("Reason", typeof(string));
dt.Load(reader);
cboxReason.ValueMember = "Reason";
cboxReason.DisplayMember = "Reason";
cboxReason.DataSource = dt;
conn.Close();
您的代码看起来不错。 我不会添加该列,那应该会自动发生。 这是有效的示例代码:
SqlConnection conn = new SqlConnection(ConnString);
conn.Open();
var reader = new SqlCommand("select ID from Users", conn).ExecuteReader();
DataTable dt = new DataTable();
dt.Load(reader);
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "ID";
comboBox1.DataSource = dt;
conn.Close();
注意:这将填充列中的值列表。 对于列名列表,建议您更改查询以返回表的列列表(特定于数据库的查询), 或者查看DataTable.Columns集合以获取列名。
您是否尝试过C#的答案-用数据表填充组合框
cboxReason.BindingContext = this.BindingContext;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.