【问题标题】:How to bind dataGridView predefined columns with columns from sql statement (without adding new columns)?如何将 dataGridView 预定义列与 sql 语句中的列绑定(不添加新列)?
【发布时间】: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

最好的问候!

【问题讨论】:

    标签: c# data-binding datagridview datatable dataview


    【解决方案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!
      猜你喜欢
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多