2015-04-06 69 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

相关问题