【问题标题】:Returning a List from my database class to a form in c#将我的数据库类中的列表返回到 c# 中的表单
【发布时间】:2017-05-22 05:57:26
【问题描述】:

在一个表单中,我希望有一个组合框,其中填充了我数据库中的名称。 与数据库直接相关的一切都发生在我的专用数据库类中。我希望从我的 sql 查询中得到的答案转到表单并显示在我的组合框中。

这是我目前所拥有的:

public string categories()
    {
        InitializeDatabase();
        connection.Open();
        string query = "SELECT Name FROM Categories";
        SqlCommand cmd = new SqlCommand(query, connection);
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                catList.Add(reader.GetString(0));
            }
        }
        return catList;
    }

我发现我不能简单地返回一个太糟糕的列表。 但我真的不知道它应该如何工作。结果需要显示在我的其他表单上的组合框中,实际上还没有任何代码

    public partial class AddImage : Form
{
    DatabaseConnector databaseConnector = new DatabaseConnector();
    public AddImage()
    {
        InitializeComponent();
        databaseConnector.categories();
    }
}

提前谢谢你!

【问题讨论】:

  • 这里的“catList”是什么类型。它是一个字符串列表?为什么不能从组合框所在的表单加载类别? OldProgrammer 分享的链接解释了如何绑定 Combobox。
  • 在以下帖子中查看我的两个表单项目:stackoverflow.com/questions/34975508/…
  • 我给出了一个错误:不能隐式地将类型 'System.collections.Generic.List 转换为字符串所以我将方法更改为列表字符串。但是组合框只说(集合)那里实际上没有任何东西
  • 假设您使用的是 Winforms?您还没有发布任何与 ComboBox、表单数据绑定相关的代码,但这里是如何做到的:stackoverflow.com/questions/600869/…

标签: c#


【解决方案1】:

您完全可以返回一个 List - 只是您已将返回类型声明为字符串:

public string Categories()
{

应该是

public List<string> Categories()
{
    var catList = new List<string>();

(另外,由于从你的代码中不清楚 catList 的范围是什么,我已将其声明为 Categories 中的局部变量)

【讨论】:

  • 通过使用断点,我发现列表正在返回,并且大部分都到达了那里,但它根本没有放在组合框中。这个 comboBox1.Items.Add(databaseConnector.categories()); 有什么问题吗
  • 您正在尝试将整个列表添加为单个项目。您需要绑定列表,或者将每个类别添加为一个项目。这是 WinForms 还是 WebForms?我已经有 8 年没有做过了,但这就是 WinForms 的答案:stackoverflow.com/questions/600869/…
猜你喜欢
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-29
  • 1970-01-01
相关资源
最近更新 更多