为DataGridView创建自定义列

时间:2014-08-07 10:08:57

标签: c# datagridview

有人可以提供一段示例代码来手动创建DataGridView的列吗?我需要创建具有自定义名称的列,并手动选择要在列单元格中显示的值。我将DataGridView绑定到Collection<>

private void initialiseDataGridView(Part part, string batchNumber){        
    dataCollection = new DataCollection(part.name, batchNumber);
    dataCollectionSource = new BindingSource(dataCollection, null);
    serialConDataGrid.DataSource = dataCollectionSource;
    serialConDataGrid.AutoGenerateColumns = false;

    // Add columns
    DataGridViewCheckBoxColumn selectedCol = new DataGridViewCheckBoxColumn(false);
    selectedCol.HeaderText = "Selected";
    DataGridViewColumn runNumberCol = new DataGridViewColumn();
    runNumberCol.HeaderText = "Run Number";
    serialConDataGrid.Columns.Clear();
    serialConDataGrid.Columns.Add(selectedCol);
    serialConDataGrid.Columns.Add(runNumberCol);

    // How can I specify which values to populate into the column cells here?
}

This msdn sample seems to be empty.

2 个答案:

答案 0 :(得分:2)

这是一个关于如何做的简单示例。

以下是您要在DataGridView中显示的对象类。您想要显示的内容需要是属性:

public class Fruit
{
    public string Name { get; set; }
    public Color Color { get; set; }

    public Fruit(string name, Color color)
    {
        Name = name;
        Color = color;
    }
}

以下是将此数据绑定到DataGridView的代码。您需要将属性的名称链接到dataGridViewColumn.DataPropertyName属性。

// The list of objects
List<Fruit> fruit = new List<Fruit>( ) 
    {new Fruit("Apple",Color.Red), 
     new Fruit("Orange",Color.Orange), 
     new Fruit("Pear",Color.Green)}; 

BindingSource source = new BindingSource(fruit, null);

dataGridView1.AutoGenerateColumns = false;

DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
column.HeaderText = "Name Of Fruit";
column.DataPropertyName = "Name"; // Name of the property in Fruit
dataGridView1.Columns.Add(column);

DataGridViewTextBoxColumn colorColumn = new DataGridViewTextBoxColumn();
colorColumn.HeaderText = "Color";
colorColumn.DataPropertyName = "Color"; // Name of the property in Fruit
dataGridView1.Columns.Add(colorColumn);

dataGridView1.DataSource = source;

答案 1 :(得分:1)

你可以这样做:

Programatically-add-new-column-to-datagridview

列需要“DataPropertyName”属性才能绑定到字段名称。

DataGridViewTextBoxColumn