2012-01-19 22 views
6

Ho un database che ha una tabella Utenti e presento i dati in un DataGridView. Vorrei rimuovere 4 colonne, ma il codice che ho (riferito da MSDN) sembra aggiungere le colonne alla fine. Come posso RIMUOVERE totalmente le colonne?Rimuovi colonna da DataGridView

Quindi questo è come il DGV guarda senza le colonne rimosse

Without Removal Code

Il codice che utilizzo per cercare di eliminare le colonne

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

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

Il risultato

With Removal Code

I wou Mi piacerebbe sbarazzarsi delle ultime 4 colonne, quindi perché il mio codice non lo fa?

Molte grazie :)

+1

avere la vostra cercato di nasconderli invece:. 'GvUsers.Columns [ "ID"] = Visibile false'? – ChrisWue

+0

Trovo che 'gvUsers.Columns.Remove (" ID ");' funzioni .. se il nome della colonna (non l'intestazione/testo), ma il nome della colonna è ID. – barlop

risposta

12

tendo a solo nascondere i campi, invece.

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

Et cetera.

+5

In realtà il suo 'gvUsers.Columns [" ID "]. Visible = false;' – bnu

+2

perché dovrebbe essere quel 'gvUsers.Columns [" ID "]. Visibility = false;' (presumibilmente) funziona per lui ma 'gvUsers. Columns.Remove ("ID"); 'non funziona per lui? – barlop

2

se non si desidera creare automaticamente le colonne quando si associa il vostro DataSource, è necessario impostare gvUsers.AutoGenerateColumns = false;

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

Voglio che crei automaticamente le colonne, ma rimuovo quelle di cui non ho bisogno. – craig1231

5

si potrebbe anche usare gvUsers.Columns.RemoveAt(IndexOfColumn);

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post - puoi sempre commentare i tuoi post, e una volta che hai [reputazione] sufficiente (http://stackoverflow.com/help/whats-reputation) essere in grado di [commentare qualsiasi post] (http://stackoverflow.com/help/privileges/comment). – War10ck

+1

Abbastanza giusto. Penso di essere stato assonnato e non ho letto bene la domanda, le mie scuse. –

+0

@ War10ck puoi spiegare perché non risponde alla domanda? mi sembra piuttosto che l'intervistatore abbia chiesto come rimuovere le colonne e l'addetto alla risposta ha dato ciò che sembra rimuovere le colonne ... nel qual caso questo risponde più della risposta accettata che ha appena parlato di visibilità. Quindi, come mai questo non risponde alla domanda? – 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; 
     }