是否有一种优雅的方法,将预定义的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
祝你好运!
答案 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" />
...