簡體   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