2016-11-29 3 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( "select Std_ID from Student"、con);名前を含んでいません。 cmd = new SqlCommand( "select Std_ID、Studentからの名前"、con); – Tyron78

+0

これはWindowsフォームアプリケーションです。私はdatabindを使用する必要がある場合、私はちょうどそのプロパティを使用してデータベースに直接コンボボックスを接続することができますが、私はコードを記述し、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

関連する問題