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

Posted

技术标签:

【中文标题】如何将 dataGridView 预定义列与 sql 语句中的列绑定(不添加新列)?【英文标题】:How to bind dataGridView predefined columns with columns from sql statement (without adding new columns)? 【发布时间】:2009-11-16 10:27:19 【问题描述】:

有没有一种优雅的方法,将预定义的 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

最好的问候!

【问题讨论】:

【参考方案1】:

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

【讨论】:

这样就解决了问题,你的答案应该被标记为正确。【参考方案2】:

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

【讨论】:

当您添加一列时,它只设置列名和标题 -- 而不是 DataPropertyName。【参考方案3】:

我认为 DataGridView 有一个 AutoGenerateColumns 属性,不是吗?

dataGridView1.AutoGenerateColumns = True;

来自 MSDN 文档:

public bool AutoGenerateColumns set; 得到; System.Windows.Forms.DataGridView 的成员

摘要:获取或设置一个值 指示是否创建列 自动当 System.Windows.Forms.DataGridView.DataSource 要么 System.Windows.Forms.DataGridView.DataMember 属性已设置。

返回:如果列应该是 true 自动创建;否则, 错误的。默认为真。

该属性不在“属性”窗口中,您必须像我的示例一样通过代码设置它。

【讨论】:

尼尔,试过 dataGridView1.AutoGenerateColumns = True; and = false,但结果相同。没用。 您是否按照文档设置了 AutoGenerateColumns before 设置 DataSource 或 DataMember? 尝试在设置DataSource之前和之后设置它仍然不是我需要的。 现在列没问题,但是行是空的。 行数也可以,只有单元格是空的。【参考方案4】:

如果您正在使用 WinForm,重要的部分是设置 DataPropertyName 属性以匹配 DataTable 列名称。您可以在设计器或代码中进行如下操作:

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

当然,已经设置了:

Me.AccountDataGridView.AutoGenerateColumns = False

【讨论】:

【参考方案5】:

像这样在你的gridview的Columns标签中添加列怎么样?

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

【讨论】:

谢谢,但我使用的是winforms!

以上是关于如何将 dataGridView 预定义列与 sql 语句中的列绑定(不添加新列)?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用组合框更改 datagridview 表?

C#DataGridView控件怎么增加行、列。

如何将基表中的列与基于用户注册创建的用户表结合起来

C#DataGridView控件怎么增加行、列?

Datagridview如何将选定的行转换为自定义对象

如何在同一个datagridview中多次使用定义的datagridview单元格