[英]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.