组合框没有通过SQL数据适配器更新

本文关键字:SQL 数据 适配器 更新 组合 | 更新日期: 2023-09-27 18:14:45

我遇到了一个奇怪的问题,我不知道它是由于连接不良还是其他原因导致的。问题我有一个组合框,我在"表单加载"事件中使用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上执行它。期待答案

组合框没有通过SQL数据适配器更新

很难说发生了什么,但我想知道对于您想要的数据表是否有点过度。看起来,普通的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"));