从DataGridView中删除列

cra*_*231 8 c# datagridview winforms

我有一个具有Users表的数据库,我在DataGridView中显示数据.我想删除4列,但我的代码(从MSDN引用)似乎在末尾追加列.我怎样才能完全删除列?

所以这就是DGV看起来没有删除列的方式

没有删除代码

我用来检索和删除列的代码

RadarServerEntities rse = new RadarServerEntities();
gvUsers.DataSource = rse.Users;

gvUsers.Columns.Remove("ID");
gvUsers.Columns.Remove("InsertDate");
gvUsers.Columns.Remove("Connections");
gvUsers.Columns.Remove("MachineID");
Run Code Online (Sandbox Code Playgroud)

结果

随着删除代码

我想摆脱最后4列,那么为什么我的代码不做呢?

非常感谢 :)

Ale*_*r R 15

我倾向于隐藏字段.

gvUsers.Columns["ID"].Visibility = false;
Run Code Online (Sandbox Code Playgroud)

等等.

  • 实际上是``gvUsers.Columns ["ID"].Visible = false;` (6认同)
  • 为什么会出现'gvUsers.Columns ["ID"].Visibility = false;`(推测)对他有用但是`gvUsers.Columns.Remove("ID");`对他不起作用? (2认同)

小智 6

你也可以用 gvUsers.Columns.RemoveAt(IndexOfColumn);


Gab*_* GM 5

如果您不想在绑定时自动创建列DataSource,则需要设置gvUsers.AutoGenerateColumns = false;

RadarServerEntities rse = new RadarServerEntities();
gvUsers.AutoGenerateColumns = false;
gvUsers.DataSource = rse.Users;
Run Code Online (Sandbox Code Playgroud)


Sou*_*ver 5

要实际删除自动生成的列,您必须在数据绑定后关闭自动生成。

所以代码将是:

RadarServerEntities rse = new RadarServerEntities();
gvUsers.DataSource = rse.Users;
gvUsers.AutoGenerateColumns = false;
gvUsers.Columns.Remove("ID");
gvUsers.Columns.Remove("InsertDate");
gvUsers.Columns.Remove("Connections");
gvUsers.Columns.Remove("MachineID");
Run Code Online (Sandbox Code Playgroud)

我还没有检查到底发生了什么,但可能当 DGV 变得可见时,丢失的列会重新自动生成。

因此,使用此解决方案,您可以在绑定数据时生成列,然后将其关闭并删除不需要的列。无法重新生成缺失的列。