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