2009-05-22 6 views
5

Estoy tratando de enlazar un DataGridView a una lista, donde MiObjeto pareceDataGridView unión a una lista de <>, algunas propiedades no se debe mostrar

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

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

quiero sólo una propiedad que se mostrará, pero en su lugar Obtengo otra columna agregada a mi DataGridView donde también se muestra Property2. ¿Cómo puedo evitar que se agregue?

Respuesta

9

Si no desea que la propiedad que se muestra:

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

lo contrario, como ya se ha dicho - AutoGenerateColumns establece en false y añadirlos manualmente.

2

Parece que tiene la propiedad AutoGenerateColumns de su control DataGridView establecida en True. Puede establecerlo en False o utilizar el método .Columns.Remove para eliminar la columna que no desea ver.

0

Creo que debe configurar las columnas manualmente, como dijo Henk. Sin embargo, es posible que desee establecer más propiedades que en su ejemplo. Esto es lo que he hecho en un proyecto:

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(); 

Creo que lo anterior funciona. Si obtiene una excepción extraña, asegúrese de que las columnas/celdas tengan estilos de celdas predeterminados definidos.

Cuestiones relacionadas