簡體   English   中英

從 DataGridView 中刪除列

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM