繁体   English   中英

选择值后,组合框保持空白

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM