Удалить столбец из 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");
результат
I хотел бы избавиться от последних 4 столбцов, так почему мой код этого не делает?
Большое Спасибо :)
5 ответов
Если вы не хотите создавать столбцы автоматически при привязке вашего DataSource
, вам необходимо установить gvUsers.AutoGenerateColumns = false;
RadarServerEntities rse = new RadarServerEntities();
gvUsers.AutoGenerateColumns = false;
gvUsers.DataSource = rse.Users;
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;
}
чтобы удалить автоматически сгенерированный столбец, необходимо отключить автоматическую генерацию после привязки данных.
таким образом, код будет:
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 становится видимым, отсутствующие столбцы повторно автоматически.
таким образом, в этом решении у вас есть столбцы, созданные в момент привязки данных, затем вы отключаете их и удаляете столбцы, которые вам не нужны. Отсутствующие столбцы не могут быть сгенерировано заново.