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

时间:2009-11-16 10:27:20

标签: c# data-binding datagridview datatable dataview

是否有一种优雅的方法,将预定义的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 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:13)

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

答案 2 :(得分:2)

我认为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   自动创建;除此以外,   假。默认值为true。

该属性不在“属性”窗口中,但您必须通过代码进行设置,如我的示例所示。

答案 3 :(得分:1)

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

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

当然,已经设置好了:

Me.AccountDataGridView.AutoGenerateColumns = False

答案 4 :(得分:0)

如何将列添加到gridview的Columns标记中呢?

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