0

这是我之前提出的一个问题的延伸。我正在尝试执行 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 迄今为止帮助我编写代码。

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

4

2 回答 2

3

改变

 dataOutput.DataSource = objDataSet;

 dataOutput.DataSource = objDataSet.Tables[0];

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

网格视图

基本上

IList 接口,包括一维数组

IListSource 接口,例如 DataTable 和 DataSet 类

IBindingList 接口,如 BindingList 类

IBindingListView接口,如BindingSource类

于 2013-07-17T22:32:08.217 回答
0

试试这样:

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,"RetentionTable");

                dataOutput.AutoGenerateColumns = true;
                dataOutput.DataSource = objDataSet.Tables["RetentionTable"];
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString());
            MessageBox.Show(ex.StackTrace.ToString());
        }
    }
于 2013-07-18T05:17:03.660 回答