【问题标题】:Data not displaying in DataGridView数据未显示在 DataGridView 中
【发布时间】:2013-07-17 22:26:09
【问题描述】:

这是我之前提出的一个问题的延伸。我正在尝试执行 SQL 查询并在 DataGridView 中显示结果,但即使我将数据源分配给查询结果并将 AutoGenerateColumns 设置为 true,查看器中也没有显示任何内容。知道缺少什么吗?

private void Query()
    {
        const string ConnectionPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RetentionDB.mdb";

        try
        {
            using (var cn = new OleDbConnection(ConnectionPath))
            using (var cmd = new OleDbCommand("SELECT * FROM RetentionTable WHERE Center = ?", cn))
            {
                // Parameter names don't matter; OleDb uses positional parameters.
                cmd.Parameters.AddWithValue("@p0", getCenter(""));

                var objDataSet = new DataSet();
                var objDataAdapter = new OleDbDataAdapter(cmd);
                objDataAdapter.Fill(objDataSet);

                dataOutput.AutoGenerateColumns = true;
                dataOutput.DataSource = objDataSet;
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
            MessageBox.Show(ex.StackTrace.ToString());
        }
    }

感谢 Richard Deeming 迄今为止帮助我编写代码。

p.s 我环顾四周,看到了很多关于此的问题,但似乎没有一个适用(至少我发现)

【问题讨论】:

  • SELECT * FROM RetentionTable WHERE Center = ? 是什么意思?
  • 这只是对 SQL Query 的测试。在“使用”部分,@p0 调用 getCenter() 函数,该函数返回一个字符串并在第一个问号实例处注入 SQL。

标签: c# sql winforms


【解决方案1】:

改变

 dataOutput.DataSource = objDataSet;

 dataOutput.DataSource = objDataSet.Tables[0];

这谈论了您可以将什么用作网格视图的数据源

GridView

基本上

IList 接口,包括一维数组

IListSource 接口,例如 DataTable 和 DataSet 类

IBindingList接口,如BindingList类

IBindingListView接口,如BindingSource类

【讨论】:

  • 你这个天才!我为此苦恼了好几个小时,只需要一点点改变!
  • 抱歉,我正在尝试,但它没有让我这样做。必须稍后再回来。
【解决方案2】:

试试这样:

私人无效查询() { const string ConnectionPath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=RetentionDB.mdb";

        try
        {
            using (var cn = new OleDbConnection(ConnectionPath))
            using (var cmd = new OleDbCommand("SELECT * FROM RetentionTable WHERE Center = ?", cn))
            {
                // Parameter names don't matter; OleDb uses positional parameters.
                cmd.Parameters.AddWithValue("@p0", getCenter(""));

                var objDataSet = new DataSet();
                var objDataAdapter = new OleDbDataAdapter(cmd);
                objDataAdapter.Fill(objDataSet,"RetentionTable");

                dataOutput.AutoGenerateColumns = true;
                dataOutput.DataSource = objDataSet.Tables["RetentionTable"];
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
            MessageBox.Show(ex.StackTrace.ToString());
        }
    }

【讨论】:

    猜你喜欢
    • 2014-01-07
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多