如何:从 Windows 窗体 DataGridView 控件中移除自动生成的列

如果 DataGridView 控件设置为根据数据源中的数据自动生成其列,则可以有选择地省略某些列。 可以通过对 Remove 集合调用 Columns 方法来执行此操作。 或者,可以通过将 Visible 属性设置为 false来隐藏视图中的列。 如果想要在特定条件下显示隐藏列,或者需要访问列中的数据而不显示隐藏列,则此方法非常有用。

通过将底层DataColumnColumnMapping属性设置为Hidden,可以防止列从一开始就自动生成。 这会告知 DataGridView 在自动生成期间跳过为该特定数据列创建列。

删除自动生成的列

  • Remove 集合调用 Columns 方法。

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

隐藏自动生成的列

  • 将列的 Visible 属性设置为 false

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

防止自动生成列

  • ColumnMapping 数据源 DataColumn 的属性设置为 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
    

示例:

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

编译代码

此示例需要:

  • 名为 dataGridView1DataGridView 控件绑定到包含 FaxCustomerID 列的表,例如 Northwind 示例数据库中的 Customers 表。

  • SystemSystem.Windows.Forms 程序集的引用。

另请参阅