2017-01-28 121 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

不是很肯定這個答案。如果您在一開始設定的數據源,每次selectedchanged活動將設定值成員之前被解僱更改你所assiging數據源

ComboBox1.ValueMember = "Nome"; 

ComboBox1.DisplayMember = "Nome"; 

ComboBox1.DataSource = dt; 

的順序。只是猜測