如何将dataGridView预定义列与SQL语句中的列绑定(而不添加新列)?

15

有没有一种优雅的方法,将预定义的dataGridView列与SQL语句的结果绑定?

例如:

dataGridView1.Columns.Add("EID", "ID");
dataGridView1.Columns.Add("FName", "FirstName");

一些类似于 SQL 的语言

SELECT t.FirstName AS FName, t.EmpID AS EID 
FROM table t ...

然后我调用

 dataGridView1.DataSource = someDataSet.Tables[0].DefaultView;

最后一个调用添加了列到我的数据表格,但我只想通过列名绑定它而不是添加新的列。
示例将得到如下结果:
表格列:ID、FirstName、FName、EID(ID和FirstName包含空单元格)
如何实现这一点:
Table columns: ID, FirstName or FirstName, ID

最好的问候!

5个回答

22

使用 dataGridView1.Columns ["FName"].DataPropertyName ="FName",其中 FName 是您数据表中的列。


这解决了问题,你的答案应该被标记为正确。 - Lucas

17

除了将AutoGenerateColumns设置为false之外,您还需要为DataGridView中的每个列设置DataPropertyName,并将其设置为数据源中相应的字段。您可以在设计器中或在设置DataSource属性之前的代码中设置此属性。


当您添加列时,它仅设置列名和标题 - 而不是 DataPropertyName。 - D. Kermott

4
我认为DataGridView有一个AutoGenerateColumns属性,是吗?
dataGridView1.AutoGenerateColumns = True;

从MSDN文档中得知: public bool AutoGenerateColumns { set; get; } 是System.Windows.Forms.DataGridView的成员。
摘要:当设置了System.Windows.Forms.DataGridView.DataSource或System.Windows.Forms.DataGridView.DataMember属性时,获取或设置一个值,该值指示是否自动创建列。
返回结果:如果应自动创建列,则为true;否则为false。默认值为true。
但是,这个属性不在属性窗口中,您必须通过代码来设置它,就像我的示例一样。

Neil尝试过dataGridView1.AutoGenerateColumns = True; 和 = false; 但是结果一样。不起作用。 - Jooj
1
根据文档,您是否在设置数据源或数据成员之前设置AutoGenerateColumns? - Neil Barnwell
之前尝试过在设置DataSource之前和之后进行设置,但仍然不符合我的需求。 - Jooj
列现在没问题了,但是行是空的。 - Jooj
行数也没问题,只是单元格为空。 - Jooj
太棒了!在你的帮助下解决了问题!我已经从XAML.CS文件将行作为列表以编程方式添加到DataGrid中,先前在XAML中使用AutoGenerateColumns="True"对DataGrid进行了初始化。运行时,所有初始化的列都填充有值,但同时也创建了新的带有变量名称的列标题。将该属性设置为False解决了这个问题。 - A.Ametov

3

如果你在做WinForm,重要的部分是将DataPropertyName属性设置为与DataTable列名称匹配。你可以在设计器或代码中按以下方式完成:

Me.AccountDataGridView.Columns("Account").DataPropertyName = "Account"

当然,设置完这个之后:
Me.AccountDataGridView.AutoGenerateColumns = False

0

你可以在GridView的Columns标签中添加列,像这样做:

<Columns>
<asp:BoundField DataField="EID" HeaderText="ID" />
<asp:BoundField DataField="FName" HeaderText="First name" />
...

谢谢,但我正在使用WinForms! - Jooj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接