【问题标题】:How to fetch data from database C#如何从数据库C#中获取数据
【发布时间】:2015-04-06 19:16:46
【问题描述】:

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

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;

    }
    }

【问题讨论】:

  • 我有一个您可能感兴趣的问题。见Dataset from database is empty
  • @mmking,我的 sql 连接是在不同的文件中建立的,这使我不能使用这些行 SqlDataAdapter adapter = new SqlDataAdapter(); SqlCommand command = new SqlCommand("SELECT * FROM Orders"); string connString = @"数据源=localhost\SQLEXPRESS;初始目录=Northwind;集成安全=True"; SqlConnection conn = new SqlConnection(connString);你能指出我哪里做错了吗?
  • 如果 comboEmployee 是您的组合框,您将 DataSource 设置为每个数据行的不同字符串。
  • @mmking,我知道你要去哪里了。除了你刚才给我的例子,我还有什么方法可以使用吗?
  • 好吧,你可以看看C# - Fill a combo box with a DataTable,但我看到@DonBoitnott 已经给你一个很好的答案了。

标签: winforms dynamic combobox


【解决方案1】:

既然您似乎想在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 中的项目做什么。如果您需要获取选定的数据而不仅仅是选定的字符串,您可能会从绑定中受益。否则,第二种方法很好。

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 2013-01-22
    • 2018-07-14
    • 1970-01-01
    • 2012-11-20
    • 2020-10-31
    • 2021-02-04
    相关资源
    最近更新 更多