Winforms 如何从数据库C中获取数据

Winforms 如何从数据库C中获取数据,winforms,dynamic,combobox,Winforms,Dynamic,Combobox,我不确定我在这些方面哪里做错了。这些代码应该从数据库中获取数据并将其分配到组合框中。但是组合框列表中没有显示任何数据。 我的代码: public void employeeListCombo() { Employee employeeList = new Employee(); Dataset employees = employeeList.getAllEmployee(); foreach(DataRow dr in employees.Tables[0].Ro

我不确定我在这些方面哪里做错了。这些代码应该从数据库中获取数据并将其分配到组合框中。但是组合框列表中没有显示任何数据。 我的代码:

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;

    }
    }

由于您似乎希望在组合框上使用数据绑定,因此应执行以下操作:

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);
        }
    }
}

选择取决于您稍后对组合框中的项目所做的操作。如果您需要获取所选数据而不仅仅是所选字符串,那么绑定可能会使您受益匪浅。否则,第二种方法就可以了。

我有一个问题可能会引起您的兴趣。请参阅。@mmking,我的sql连接是在另一个文件中建立的,这允许我不使用这些行SqlDataAdapter=new SqlDataAdapter;SqlCommand=newsqlcommandselect*FROM Orders;字符串connString=@Data Source=localhost\SQLEXPRESS;初始目录=北风;综合安全=真实;SqlConnection conn=新的SqlConnectionconnString;您能指出我哪里做错了吗?如果comboEmployee是您的combobox,那么您正在为每个数据行将数据源设置为不同的字符串。@mmking,我明白您的意思了。除了你刚才给我的例子之外,还有什么方法我可以使用吗?好吧,你可以看看,但是我看到@DonBoitnott已经给了你一个很好的答案。