将 DataGridView 直接绑定到 DataSet 失败
Posted
技术标签:
【中文标题】将 DataGridView 直接绑定到 DataSet 失败【英文标题】:Binding a DataGridView to a DataSet directly fails 【发布时间】: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。 【参考方案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。
【讨论】:
以上是关于将 DataGridView 直接绑定到 DataSet 失败的主要内容,如果未能解决你的问题,请参考以下文章
如何在已经绑定数据源的datagridview添加一行数据并保存到数据库??
DataGridView绑定DataTable动态生成列 并且将列名中文显示