首页 > 解决方案 > 无法在 DataGridView 中隐藏列

问题描述

我在 Winform 上有四个 dgv。通过将前 3 个 dvg 的“Visible”属性设置为 false,我成功地隐藏了前 3 个 dvg 上不需要的列。但是,有一列不会隐藏在第四个 dgv 上,我不知道为什么。

这是第四个 dgv 的代码:

With Me.DataGridView4
    .DataSource = BSSJ
    .AutoGenerateColumns = True
    .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
    .Columns("RecID").Visible = False
    .Columns("JobID").Visible = False
    .Columns("Deleted").Visible = False
    .Columns("Amt").DefaultCellStyle.Format = "#,##0.00"
    .Columns("Amt").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
End With

它是仍然出现在 dgv 中的“RecID”列。其他两列“JobID”和“Deleted”按预期隐藏。
数据源“BSSJ”是绑定到 SQL 表的绑定源。我不能从查询的 Select 语句中省略此字段,因为它在与父表的关系中是必需的。
“RecID”是绑定到“BSSJ”的表中的主键,但其他三个dgv的主键隐藏成功。
我可能错过了一些简单的东西,但我只是看不到它。
有任何想法吗?

标签: sqlvb.net

解决方案


这不是关于为什么您的代码不起作用的直接答案,我无法复制您的问题。

但是,如果您删除 autosizecolumns 代码行,则可以动态设置列的宽度并可能解决该问题

.Columns("RecID").Width = 0
.Columns("Amt").Width = 200
.Columns("JobID").Visible = False
.Columns("Deleted").Visible = False
.Columns("Amt").DefaultCellStyle.Format = "#,##0.00"
.Columns("Amt").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight

推荐阅读