【问题标题】:Combo Box is not updating through SQL Data Adapter组合框未通过 SQL 数据适配器更新
【发布时间】:2017-03-06 14:39:33
【问题描述】:

我遇到了一个奇怪的问题,我不知道这是由于连接不良还是其他原因造成的。 问题我有一个组合框,我在“表单加载”事件中使用 SQL 数据表填充值,直到今天它工作正常。每次加载表单时,两个组合框都是空的,一个用于日期,另一个用于公司名称。我使用的代码如下。

public DataTable getResult(string query)
    {
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();
        SqlCommand cmd = new SqlCommand(query, con);
        cmd.CommandTimeout = 0;
        da.SelectCommand = cmd;
        da.Fill(dt);
        return dt;
    }
private void Reports_Load(object sender, EventArgs e)
    {
        RevenueDate_dt = func.getResult(dateQuery);

        foreach (DataRow dr in RevenueDate_dt.Rows)
        {
            comboBox1.Items.Add(dr["Global_Period_Month"].ToString());
        }

        Gpn_dt = func.getResult(GpnQuery);

        foreach (DataRow dr in Gpn_dt.Rows)
        {
            comboBox2.Items.Add(dr["gpnname"].ToString());
        }
    }

当我在 SQL Server 上执行查询时显示完美的结果。 期待答案。

【问题讨论】:

  • 在“return dt”中设置断点。数据表是什么样的。
  • 它显示第 80 行并且没有表名!组合框仍然是空的。查询很好,连接很好

标签: c# sql combobox dataadapter


【解决方案1】:

很难说发生了什么,但我想知道数据表对于你想要的东西是否有点矫枉过正。看起来普通的 DataReader 的开销要少得多,并且更容易调试。像这样的:

public string[] getResult(string query, string ColumnName)
{
    List<string> results = new List<string>();

    SqlCommand cmd = new SqlCommand(query, con);
    cmd.CommandTimeout = 0;

    SqlDataReader reader = cmd.ExecuteReader();
    int col = reader.GetOrdinal(ColumnName);
    while (reader.Read())
    {
        results.Add(reader.GetString(col));
    }

    reader.Close();

    return results.ToArray();
}

然后将项目添加到您的组合框中,它看起来就像这样:

comboBox1.Items.AddRange(func.getResult(dateQuery, "Global_Period_Month"));
comboBox2.Items.AddRange(func.getResult(GpnQuery, "gpnname"));

【讨论】:

  • 谢谢@Hambone,是的,前天对我来说这也是一个非常典型的情况,代码运行良好,但随后崩溃,但无论如何感谢您的回答,代码现在对我有用。感谢您的回复。
  • 感谢您的反馈。数据表是一把双刃剑。非常有用,可以处理很多繁重的工作,但它们有一些粗糙的边缘。我很高兴这对你有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多