2012-01-19 39 views
6

Tengo una base de datos que tiene una tabla Usuarios y presento los datos en un DataGridView. Me gustaría eliminar 4 columnas, pero el código que tengo (referenciado en MSDN) parece agregar las columnas al final. ¿Cómo puedo eliminar completamente las columnas?Eliminar columna de DataGridView

Así que este es el aspecto de la DGV sin las columnas removidos

Without Removal Code

el código que utilizan para tratar de eliminar las columnas

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

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

El resultado

With Removal Code

I wou Me gustaría deshacerme de las últimas 4 columnas, entonces ¿por qué mi código no lo está haciendo?

Muchas Gracias :)

+1

Que su intentó esconderlos en su lugar:. 'GvUsers.Columns [ "ID"] = Visible false'? – ChrisWue

+0

Me parece que 'gvUsers.Columns.Remove (" ID ");' funciona ... si el nombre de la columna (no encabezado/texto), pero el nombre de la columna es ID. – barlop

Respuesta

12

tiendo a ocultar los campos en su lugar.

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

etcétera.

+5

En realidad es 'gvUsers.Columns [" ID "]. Visible = falso;' – bnu

+2

¿por qué sería que 'gvUsers.Columns [" ID "]. Visibility = false;' (presumiblemente) funciona para él pero 'gvUsers. Columns.Remove ("ID"); 'no funciona para él? – barlop

2

si no desea crear las columnas de forma automática cuando se enlaza a su DataSource, debe configurar gvUsers.AutoGenerateColumns = false;

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

Quiero que cree automáticamente las columnas, pero eliminé las que no necesito. – craig1231

5

también se podría utilizar gvUsers.Columns.RemoveAt(IndexOfColumn);

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar aclaraciones de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones, y una vez que tenga suficiente [reputación] (http://stackoverflow.com/help/whats-reputation) lo hará poder [comentar cualquier publicación] (http://stackoverflow.com/help/privileges/comment). – War10ck

+1

Bastante justo. Creo que tenía sueño y no leí bien la pregunta, mis disculpas. –

+0

@ War10ck ¿Puedes explicar por qué no responde la pregunta? me parece más bien que el interrogador preguntó cómo eliminar las columnas y el que responde dio lo que parece ser lo que eliminaría las columnas ... en cuyo caso esto responde más que la respuesta aceptada que acaba de hablar de visibilidad. Entonces, ¿cómo es que esto no responde la pregunta? – 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; 
     } 
Cuestiones relacionadas