【问题标题】:Binding a DataGridView to a DataSet directly fails将 DataGridView 直接绑定到 DataSet 失败
【发布时间】:2011-05-05 08:31:42
【问题描述】:

此代码绑定的 DataGridView 未按预期显示信息:

dataGridView1.DataSource = ds;

这是 ds 的代码:

public DataSet ConnectandReadList()
        {
            DataSet ds = new DataSet();

            string connection_string="Data Source=hermes;database=qcvalues; Integrated Security=SSPI;";            

            using (var myConnection = new SqlConnection(connection_string))
            {

                myConnection.Open();
                var command = new SqlCommand(InitializeQuery(), myConnection);
                var adapter = new SqlDataAdapter(command);

                adapter.Fill(ds);
            }


            return ds;
        }

【问题讨论】:

  • 数据集是数据表的集合。您需要指定要绑定到 DataGridView 的 DataTable。否则,即使只有一个,它也不知道使用哪个 DataTable。

标签: c# .net winforms data-binding datasource


【解决方案1】:

尝试绑定到数据集中的表:dataGridView1.DataSource = ds.Tables[0];

DataGridView.DataSource 属性的文档中,您还可以绑定到DataSet 并使用DataMember 属性:

当绑定到包含多个列表或表的数据源时,您必须将 DataMember 属性设置为指定要绑定到的列表或表的字符串。

我认为在这种情况下,表名应该是“Table”,因为您没有明确命名它。

【讨论】:

  • 该死!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!你能解释一下为什么我需要这样做吗?
  • 不完全确定,除此之外,我认为 datagridview 不够聪明,无法查看其表的数据集。从来没想过进一步研究它......
  • +1 或者将 datagridview1.DataMember 设置为表名,但由于您不手动创建它,因此上述操作更容易。
  • 猜猜这也是您想要调试数据源的原因? ;)
  • @Doggett,谢谢,是的,刚刚在文档中看到了关于 DataMember 的内容。将其作为附加信息添加到答案中。
【解决方案2】:

ds 是数据集吗?

如果是这样,请尝试将您的 DGV 的 DataMember 设置为 DataSet 中的 DataTable 或为 DataSource 指定您的 DataSet 的 DataTable。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-17
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 2012-02-27
    • 1970-01-01
    • 2012-06-21
    相关资源
    最近更新 更多