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

此致!

4

5 回答 5

20

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

于 2011-03-02T16:19:24.447 回答
17

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

于 2010-01-26T03:20:43.890 回答
4

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

dataGridView1.AutoGenerateColumns = True;

来自 MSDN 文档:

公共布尔 AutoGenerateColumns { 设置;得到; System.Windows.Forms.DataGridView 的成员

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

返回: 如果列应该自动创建,则返回 true;否则为假。默认值为真。

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

于 2009-11-16T10:42:55.417 回答
2

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

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

当然,设置了这个:

Me.AccountDataGridView.AutoGenerateColumns = False
于 2018-10-07T12:36:14.230 回答
0

像这样将列添加到 gridview 的 Columns 标签中怎么样?

<Columns>
<asp:BoundField DataField="EID" HeaderText="ID" />
<asp:BoundField DataField="FName" HeaderText="First name" />
...
于 2009-11-16T13:14:22.427 回答