How to: Delete or Hide Columns in the Windows Forms DataGrid Control

Note

The DataGridView control replaces and adds functionality to the DataGrid control; however, the DataGrid control is retained for both backward compatibility and future use, if you choose. For more information, see Differences Between the Windows Forms DataGridView and DataGrid Controls.

You can programmatically delete or hide columns in the Windows Forms DataGrid control by using the properties and methods of the GridColumnStylesCollection and DataGridColumnStyle objects (which are members of the DataGridTableStyle class).

The deleted or hidden columns still exist in the data source the grid is bound to, and can still be accessed programmatically. They are just no longer visible in the datagrid.

Note

If your application does not access certain columns of data, and you do not want them displayed in the datagrid, then it is probably not necessary to include them in the data source in the first place.

To delete a column from the DataGrid programmatically

  1. In the declarations area of your form, declare a new instance of the DataGridTableStyle class.

  2. Set the DataGridTableStyle.MappingName property to the table in your data source that you want to apply the style to. The following example uses the DataGrid.DataMember property, which it assumes is already set.

  3. Add the new DataGridTableStyle object to the datagrid's table styles collection.

  4. Call the RemoveAt method of the DataGrid's GridColumnStyles collection, specifying the column index of the column to delete.

    ' Declare a new DataGridTableStyle in the  
    ' declarations area of your form.  
    Dim ts As DataGridTableStyle = New DataGridTableStyle()  
    
    Sub DeleteColumn()  
       ' Set the DataGridTableStyle.MappingName property  
       ' to the table in the data source to map to.  
       ts.MappingName = DataGrid1.DataMember  
    
       ' Add it to the datagrid's TableStyles collection  
       DataGrid1.TableStyles.Add(ts)  
    
       ' Delete the first column (index 0)  
       DataGrid1.TableStyles(0).GridColumnStyles.RemoveAt(0)  
    End Sub  
    
    // Declare a new DataGridTableStyle in the  
    // declarations area of your form.  
    DataGridTableStyle ts = new DataGridTableStyle();  
    
    private void deleteColumn()  
    {  
       // Set the DataGridTableStyle.MappingName property  
       // to the table in the data source to map to.  
       ts.MappingName = dataGrid1.DataMember;  
    
       // Add it to the datagrid's TableStyles collection  
       dataGrid1.TableStyles.Add(ts);  
    
       // Delete the first column (index 0)  
       dataGrid1.TableStyles[0].GridColumnStyles.RemoveAt(0);  
    }  
    

To hide a column in the DataGrid programmatically

  1. In the declarations area of your form, declare a new instance of the DataGridTableStyle class.

  2. Set the MappingName property of the DataGridTableStyle to the table in your data source that you want to apply the style to. The following code example uses the DataGrid.DataMember property, which it assumes is already set.

  3. Add the new DataGridTableStyle object to the datagrid's table styles collection.

  4. Hide the column by setting its Width property to 0, specifying the column index of the column to hide.

    ' Declare a new DataGridTableStyle in the  
    ' declarations area of your form.  
    Dim ts As DataGridTableStyle = New DataGridTableStyle()  
    
    Sub HideColumn()  
       ' Set the DataGridTableStyle.MappingName property  
       ' to the table in the data source to map to.  
       ts.MappingName = DataGrid1.DataMember  
    
       ' Add it to the datagrid's TableStyles collection  
       DataGrid1.TableStyles.Add(ts)  
    
       ' Hide the first column (index 0)  
       DataGrid1.TableStyles(0).GridColumnStyles(0).Width = 0  
    End Sub  
    
    // Declare a new DataGridTableStyle in the  
    // declarations area of your form.  
    DataGridTableStyle ts = new DataGridTableStyle();  
    
    private void hideColumn()  
    {  
       // Set the DataGridTableStyle.MappingName property  
       // to the table in the data source to map to.  
       ts.MappingName = dataGrid1.DataMember;  
    
       // Add it to the datagrid's TableStyles collection  
       dataGrid1.TableStyles.Add(ts);  
    
       // Hide the first column (index 0)  
       dataGrid1.TableStyles[0].GridColumnStyles[0].Width = 0;  
    }  
    

See also