Удалить столбец из DataGridView - PullRequest
8 голосов
/ 19 января 2012

У меня есть база данных с таблицей Users, и я представляю данные в DataGridView. Я хотел бы удалить 4 столбца, но код, который у меня есть (по ссылке из MSDN), кажется, добавляет столбцы в конце. Как я могу полностью удалить столбцы?

Так выглядит DGV без удаленных столбцов

Without Removal Code

Код, который я использую, чтобы ПОПРОБОВАТЬ и удалить столбцы

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

gvUsers.Columns.Remove("ID");
gvUsers.Columns.Remove("InsertDate");
gvUsers.Columns.Remove("Connections");
gvUsers.Columns.Remove("MachineID");

Результат

With Removal Code

Я хотел бы избавиться от последних 4 столбцов, так почему же мой код не делает это?

Большое спасибо:)

Ответы [ 5 ]

15 голосов
/ 19 января 2012

Вместо этого я склонен скрывать поля.

gvUsers.Columns["ID"].Visibility = false;

и так далее.

5 голосов
/ 28 января 2014

Вы также можете использовать gvUsers.Columns.RemoveAt(IndexOfColumn);

4 голосов
/ 19 января 2012

, если вы не хотите создавать столбцы автоматически при привязке DataSource, вам нужно установить gvUsers.AutoGenerateColumns = false;

RadarServerEntities rse = new RadarServerEntities();
gvUsers.AutoGenerateColumns = false;
gvUsers.DataSource = rse.Users;
2 голосов
/ 10 июля 2018

Чтобы фактически удалить автоматически сгенерированный столбец, необходимо отключить автоматическую генерацию после привязки данных.

Таким образом, код будет:

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 становится видимым, пропущенные столбцы повторно генерируются автоматически.

Итак, в этом решении у вас есть столбцы, созданные в момент привязки данных, затем вы отключаете их и удаляете ненужные столбцы. Отсутствующие столбцы не могут быть сгенерированы повторно.

0 голосов
/ 07 июня 2016
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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...