2015-04-06 31 views
0

我不知道我在這些行中做了什麼錯誤。代碼應該從數據庫獲取數據並將其分配到組合框中。但組合框列表中沒有顯示數據。 我的代碼:如何從數據庫C中獲取數據#

public void employeeListCombo() 
{ 

    Employee employeeList = new Employee(); 

    Dataset employees = employeeList.getAllEmployee(); 

    foreach(DataRow dr in employees.Tables[0].Rows){ 

    String selectedEmp = dr["firstName"].ToString(); 

     comboEmployee.DataSource = selectedEmp; 

    } 
    } 
+0

我有一個問題可能是你感興趣的。請參見[數據庫中的數據集爲空](http://stackoverflow.com/questions/29448761/dataset-from-database-is-empty)。 – mmking 2015-04-06 02:16:42

+0

@mmking,我的sql連接建立在不同的文件中,並允許我不使用這些行SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand command = new SqlCommand(「SELECT * FROM Orders」); string connString = @「Data Source = localhost \ SQLEXPRESS; Initial Catalog = Northwind; Integrated Security = True」; SqlConnection conn = new SqlConnection(connString);你能指出我在哪裏做錯了嗎? – 2015-04-06 02:44:00

+0

如果comboEmployee是您的組合框,您將爲每個數據行將您的DataSource設置爲不同的字符串。 – mmking 2015-04-06 03:22:12

回答

0

因爲你似乎想在ComboBox使用DataBinding,你應該這樣做:

public void employeeListCombo() 
{ 
    var employeeList = new Employee(); 
    var employees = employeeList.getAllEmployee(); 
    comboEmployee.DataSource = employees.Tables[0].DefaultView; 
    comboEmployee.DisplayMember = "firstName"; 
} 

但是,你原來的代碼也可以作出努力:

public void employeeListCombo() 
{ 
    var employeeList = new Employee(); 
    var employees = employeeList.getAllEmployee(); 
    if (employees.Tables.Count > 0) 
    { 
     foreach(DataRow dr in employees.Tables[0].Rows) 
     { 
      var selectedEmp = dr["firstName"] as String; 
      if (!String.IsNullOrEmpty(selectedEmp)) 
       comboEmployee.Items.Add(selectedEmp); 
     } 
    } 
} 

選擇取決於您以後對ComboBox中的項目所做的操作。如果您不僅需要選擇的字符串而是選擇數據,那麼您可能會受益於綁定。否則,第二種方法是好的。

+0

謝謝sooo @DonBoitnott !!!!! – 2015-04-07 00:20:01

+0

感謝提醒@mmking! – 2015-04-07 01:13:44