具有关联数据源的 DataGridView 的自定义列名称

Posted

技术标签:

【中文标题】具有关联数据源的 DataGridView 的自定义列名称【英文标题】:Custom column names for DataGridView with associated DataSource 【发布时间】:2011-09-07 20:43:43 【问题描述】:

如何为 DataGridView 和关联的 DataSource 设置自定义列名?

这里有一些代码:

class Key

    public string Value  get; 
    public DateTime ExpirationDate  get; 


List<Key> keys = new List<Key>();
...// fill keys collection

DataGridView dataGridView = createAndInitializeDataGridView();
dataGridView.DataSource = keys;

这为我提供了列名为“Value”和“ExpirationDate”的 dataGridView。例如,我应该如何将名称更改为“Key”和“Expire”?

【问题讨论】:

如果您的数据来自数据库,您可以通过别名来更改 SQL 中的列名。 【参考方案1】:

使用属性上的 DisplayName 属性来指定 DataGridView 中的列名:

class Key

    [System.ComponentModel.DisplayName("Key")]
    public string Value  get; 
    [System.ComponentModel.DisplayName("Expire")]
    public DateTime ExpirationDate  get; 
 

【讨论】:

如果我基于这个对象创建新对象,例如通过内部连接,这不起作用。【参考方案2】:

您应该能够在设置数据源后更改标题单元格:

    if (dataGridView1.Columns["Value"] != null)
        dataGridView1.Columns["Value"].HeaderText = "Key";
    if (dataGridView1.Columns["Expiration"] != null)
        dataGridView1.Columns["Expiration"].HeaderText = "Expire";

【讨论】:

感谢您的回答。它奏效了,但 Jay Riggs 给出了另一个我更喜欢的答案。 酷,是的,我也更喜欢他的,它在记忆库中:-)【参考方案3】:
public DataTable SetColumnsHeaderName(string[] TagName)

    DataTable dt = new DataTable();
    foreach (var item in TagName)
    
        dt.Columns.Add(item);
    
    return dt;


public void ShowDataGridView()

    string[] tag = new string[]  "First Name", "Last Name", "Phone Number", ;
    //fill datatable columns Name
    var dt = SetColumnsHeaderName(tag);
    //connect db and fetch table name
    var listx = db.tablename.ToList();
    foreach (var item in listx)
    
        dt.Rows.Add(new object[]  item.Name, item.Family, item.Phone );
    
    datagridView.DataSource = dt;

【讨论】:

以上是关于具有关联数据源的 DataGridView 的自定义列名称的主要内容,如果未能解决你的问题,请参考以下文章

将具有不同数据源的 DataGridViewComboBoxCell 添加到 DataGridView

在 datagridview1 中添加具有全新类型的 SQL Server 数据库数据的新列

datagridview控件里的行不能设置为不可见

如何将每行具有不同组合框项的 DataTable 绑定到 DataGridView?

怎么在dataGridView中不连接数据库添列的值

具有自定义聚合函数的 F# 查询表达式