【问题标题】:Custom column names for DataGridView with associated DataSource具有关联数据源的 DataGridView 的自定义列名称
【发布时间】: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 中的列名。

标签: c# winforms datagridview datasource


【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2012-06-10
    • 2015-12-08
    • 2023-02-17
    • 1970-01-01
    相关资源
    最近更新 更多