2012-01-19 7 views
6

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

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

Without Removal Code

Кодекс Я использую TRY и удалить столбцы

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

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

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

+1

иметь свой пытались прятать их вместо этого:. 'GvUsers.Columns [ "ID"] Visible = false'? – ChrisWue

+0

Я нахожу, что 'gvUsers.Columns.Remove (« ID »);' работает .. если имя столбца (не заголовок/текст), а имя столбца - ID. – barlop

ответ

12

Я, как правило, просто скрыть поля вместо этого.

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

Et cetera.

+5

На самом деле его 'gvUsers.Columns [" ID "]. Visible = false;' – bnu

+2

почему это будет то, что 'gvUsers.Columns [" ID "]. Visibility = false;' (предположительно) работает для него, но 'gvUsers. Columns.Remove ("ID"); 'не работает для него? – barlop

2

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

RadarServerEntities rse = new RadarServerEntities(); 
gvUsers.AutoGenerateColumns = false; 
gvUsers.DataSource = rse.Users; 
+1

Я хочу, чтобы он автоматически создавал столбцы, но удалял те, которые мне не нужны. – craig1231

5

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

+0

Это не дает ответа на вопрос. Чтобы критиковать или запросить разъяснения у автора, оставьте комментарий ниже своего сообщения - вы всегда можете прокомментировать свои собственные сообщения, и как только у вас будет достаточно [репутации] (http://stackoverflow.com/help/whats-reputation), вы будете быть в состоянии [прокомментировать любое сообщение] (http://stackoverflow.com/help/privileges/comment). – War10ck

+1

Достаточно честный. Я думаю, что я был сонным и не очень хорошо читал вопрос, мои извинения. –

+0

@ War10ck вы можете объяснить, почему он не отвечает на вопрос? мне кажется, что вопрос спрашивает, как удалить столбцы, а ответчик дал то, что будет выглядеть, что бы удалить столбцы .. В этом случае это отвечает на него больше, чем принятый ответ, который просто говорит о видимости. Так как же это не отвечает на вопрос? – barlop

0
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; 
     } 
Смежные вопросы