2017-01-28 18 views
0

私は正しいデータを取得しますが、変更はしないコンボボックスを持っています。私はそれを変更しようとすると、私はいつもリストの名を私に与えます。どんな考え?おかげComboboxは値を変更しません

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     SqlConnection conn2 = new SqlConnection("Data Source=DIEGOPC;Initial Catalog=Studio;Integrated Security=True;"); 
     conn2.Open(); 
     SqlCommand sc = new SqlCommand("SELECT Nome FROM DClub order by Nome", conn2); 
     SqlDataReader reader; 

     reader = sc.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Nome", typeof(string)); 
     dt.Load(reader); 

     comboBox1.DataSource = dt; 
     comboBox1.ValueMember = "Nome"; 
     comboBox1.DisplayMember = "Nome"; 
     conn2.Close(); 

答えて

0

あなたはretrivingとSelectedIndexChanged上のデータを結合しています。したがって、値が変更されるたびに、バックエンドからデータを取得して再度バインドします。

対応するイベントを使用してフォームをロードしている間、または初期化中にデータをバインドする方が効果的です。

CODE:

private void Form1_Load(object sender, System.EventArgs e) 
    { 
     SqlConnection conn2 = new SqlConnection("Data Source=DIEGOPC;Initial Catalog=Studio;Integrated Security=True;"); 
     conn2.Open(); 
     SqlCommand sc = new SqlCommand("SELECT Nome FROM DClub order by Nome", conn2); 
     SqlDataReader reader; 
     reader = sc.ExecuteReader(); 
     DataTable dt = new DataTable(); 
     dt.Columns.Add("Nome", typeof(string)); 
     dt.Load(reader); 
     comboBox1.DataSource = dt; 
     comboBox1.ValueMember = "Nome"; 
     comboBox1.DisplayMember = "Nome"; 
     conn2.Close(); 
    } 
0

ないこの回答については非常に確認してください。あなたが最初にデータソースを設定した場合は、データソース

ComboBox1.ValueMember = "Nome"; 

ComboBox1.DisplayMember = "Nome"; 

ComboBox1.DataSource = dt; 

をassigingされる順序を変更し、イベントをselectedchangedたびに値メンバを設定する前に解雇されます。ちょうど推測

関連する問題