2016-11-29 69 views
0

我剛剛綁定了我的組合框到數據庫,但它沒有顯示我的值。但是,通過下拉框的長度,我可以看到數值在其中,但不可見。組合框綁定後不顯示文本

我只是點了一個值,它確實工作,並帶我到下一個表格。但是,我怎樣才能使這些值可見?

private void StudentLogin_Load(object sender, EventArgs e) 
    { 
     con = new SqlConnection(constr); 
     con.Open(); 
     cmd = new SqlCommand("select Std_ID from Student", con); 
     SqlDataReader reader; 

     reader = cmd.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Std_ID", typeof(string)); 
     dt.Columns.Add("Name", typeof(string)); 
     dt.Load(reader); 

     metroComboBox1.ValueMember = "Std_ID"; 
     metroComboBox1.DisplayMember = "Name"; 
     metroComboBox1.DataSource = dt; 

     con.Close(); 
    } 
    private void metroComboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string ID = metroComboBox1.SelectedValue.ToString(); 
    } 
+0

你有沒有試過調用'.DataBind()'方法?這是什麼類型的應用程序?以及爲什麼使用DataReader填充DataTable?爲什麼不適配器? –

+1

我認爲問題出在你的查詢中:cmd = new SqlCommand(「從學生中選擇Std_ID」,con);不包含名稱。請嘗試以下操作:cmd = new SqlCommand(「select Std_ID,Student from Student」,con); – Tyron78

+0

這是一個Windows窗體應用程序。如果我必須使用數據綁定,那麼我可以直接使用它的屬性將該組合框連接到數據庫,但是我決定編寫代碼並使用Select查詢從數據庫讀取數據。 – Ahsan

回答

1

我認爲這個問題是在您的查詢:

cmd = new SqlCommand("select Std_ID from Student", con); 

不包含名稱。請嘗試以下操作:

cmd = new SqlCommand("select Std_ID, Name from Student", con); 

爲了顯示ID而不是名稱,請將Std_ID也作爲displaymamber。

2
metroComboBox1.DataSource = dt; 
metroComboBox1.ValueMember = "Std_ID"; 
metroComboBox1.DisplayMember = "Name"; 
metroComboBox1.DataBind(); 
+0

謝謝。它正在工作。 – Ahsan