Binding DataGridView to list <>, some properties should not be displayed

I am trying to bind a DataGridView to a list where MyObject looks like

class MyObject
{
    public string Property1 { get; set; }
    public string Property2 { get; set; }
}

//List<MyObject> objects;
grid.Columns[0].DataPropertyName = "Property1";
grid.DataSource = objects;

I want to show only one property, but instead I get another column added to my DataGridView, which also displays Property2. How can I prevent it from being added?

+5
source share
3 answers

If you never want this property to display:

class MyObject
{
    public string Property1 { get; set; }
    [Browsable(false)]
    public string Property2 { get; set; }
}

Otherwise, as already indicated, set AutoGenerateColumnsto false and add them manually.

+9
source

, AutoGenerateColumns DataGridView True. False, .Columns.Remove , .

+2

I believe that you need to adjust the columns manually, as Henk said. However, you can set more properties than in your example. This is what I did in the project:

DataGridView dataGridView = new DataGridView();
dataGridView.AutoGenerateColumns = false;

DataGridViewColumn columnA = new DataGridViewTextBoxColumn();
columnA.DataPropertyName = "propertyA";
columnA.HeaderText = "Column A";
columnA.Name = "columnA";

DataGridViewColumn columnB = new DataGridViewTextBoxColumn();
columnB.DataPropertyName = "propertyB";
columnB.HeaderText = "Column B";
columnB.Name = "columnB";

dataGridView.Columns.Clear();
dataGridView.Columns.Add(columnA);
dataGridView.Columns.Add(columnB);
dataGridView.AutoResizeColumns();

I believe this works. If you get a strange exception check to make sure that the default cell styles are defined in the columns / cells.

0
source

All Articles