[英]Remove Column from DataGridView
我有一个包含用户表的数据库,我在 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");
结果
我想去掉最后 4 列,那为什么我的代码不这样做呢?
非常感谢 :)
我倾向于只是隐藏字段。
gvUsers.Columns["ID"].Visibility = false;
等等。
你也可以使用gvUsers.Columns.RemoveAt(IndexOfColumn);
如果您不想在绑定DataSource
时自动创建列,则需要设置gvUsers.AutoGenerateColumns = false;
RadarServerEntities rse = new RadarServerEntities();
gvUsers.AutoGenerateColumns = false;
gvUsers.DataSource = rse.Users;
要实际删除自动生成的列,您必须在数据绑定后关闭自动生成。
所以代码将是:
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");
我还没有检查到底发生了什么,但可能当 DGV 变得可见时,丢失的列会重新自动生成。
因此,使用此解决方案,您可以在绑定数据时生成列,然后将其关闭并删除不需要的列。 无法重新生成缺失的列。
DataGridViewColumn DataGridViewColumnSelected;
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex !=-1 && e.RowIndex == -1)
{
DataGridViewColumnSelected = dataGridView1.Columns[e.ColumnIndex] as DataGridViewColumn;
}
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool bHandled = false;
switch (keyData)
{
case Keys.Delete:
if (DataGridViewColumnSelected != null)
{
this.dataGridView1.Columns.RemoveAt(DataGridViewColumnSelected.Index);
//dataGridView1.Columns[DataGridViewColumnSelected.Name].Visible = false; // case of just hiding the column
}
break;
}
return bHandled;
}
我认为您必须在将 DataTable 传递给 DGV 之前对其进行修改
如下:
RadarServerEntities rse = new RadarServerEntities();
rse.Users.Columns.Remove("ID");
rse.Users.Columns.Remove("InsertDate");
rse.Users.Columns.Remove("Connections");
rse.Users.Columns.Remove("MachineID");
dgvUsers.DataSource=rse.Users;
这种方法对我有用
如果您想要从DataGridView
删除您选择的列,那么此代码适合您。
将此代码放在删除按钮中并准备删除您选择的列。
int rowIndex = TuDataGrigView1.CurrentCell.RowIndex;
TuDataGrigView1.Rows.RemoveAt(rowIndex);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.