具有关联数据源的 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 数据库数据的新列