Compartir por


Cómo eliminar columnas generadas automáticamente de un control DataGridView de Windows Forms

Cuando el DataGridView control se establece para generar automáticamente sus columnas en función de los datos de su origen de datos, puede omitir de forma selectiva determinadas columnas. Puede hacer esto llamando al método Remove en la colección Columns. Como alternativa, puede ocultar columnas de la vista estableciendo la propiedad Visible en false. Esta técnica es útil cuando desea mostrar las columnas ocultas en determinadas condiciones o cuando necesite tener acceso a los datos de las columnas sin mostrarlos.

Otro enfoque consiste en evitar que las columnas se generen automáticamente desde el principio estableciendo la propiedad ColumnMapping del subyacente DataColumn en Hidden. Esto indica que DataGridView omita la creación de una columna para esa columna de datos específica durante la generación automática.

Para quitar columnas generadas automáticamente

  • Llame al método Remove de la colección Columns.

    dataGridView1.AutoGenerateColumns = true;
    dataGridView1.DataSource = customersDataSet;
    dataGridView1.Columns.Remove("Fax");
    
    With dataGridView1
        .AutoGenerateColumns = True
        .DataSource = customersDataSet
        .Columns.Remove("Fax")
    End With
    

Para ocultar columnas generadas automáticamente

  • Establezca la propiedad Visible de la columna en false.

    dataGridView1.Columns["CustomerID"].Visible = false;
    
    dataGridView1.Columns("CustomerID").Visible = False
    

Para evitar que las columnas se generen automáticamente

  • Configure la propiedad ColumnMapping del DataColumn del origen de datos en Hidden.

    // Assuming you have a DataTable with a column you want to exclude
    dataTable.Columns["SensitiveData"].ColumnMapping = MappingType.Hidden;
    
    ' Assuming you have a DataTable with a column you want to exclude
    dataTable.Columns("SensitiveData").ColumnMapping = MappingType.Hidden
    

Ejemplo

private void BindDataAndInitializeColumns()
{
    dataGridView1.AutoGenerateColumns = true;
    dataGridView1.DataSource = customersDataSet;
    dataGridView1.Columns.Remove("Fax");
    dataGridView1.Columns["CustomerID"].Visible = false;
}
Private Sub BindDataAndInitializeColumns()

    With dataGridView1
        .AutoGenerateColumns = True
        .DataSource = customersDataSet
        .Columns.Remove("Fax")
        .Columns("CustomerID").Visible = False
    End With

End Sub

Compilar el código

Este ejemplo requiere:

  • Control DataGridView llamado dataGridView1 enlazado a una tabla que contiene Fax y CustomerID columnas, como la tabla Customers de la base de datos de ejemplo Northwind.

  • Referencias a los ensamblados System y System.Windows.Forms.

Consulte también