2012-01-19 17 views
6

Mam bazę danych, która ma tabelę Użytkownicy i przedstawiam dane w DataGridView. Chciałbym usunąć 4 kolumny, ale kod, który mam (odniesienia z MSDN) wydaje się dołączyć kolumny na końcu. Jak mogę całkowicie USUNĄĆ kolumny?Usuń kolumnę z DataGridView

Tak to jest jak DGV wygląda bez kolumny usuwane

Without Removal Code

Kodeks mogę używać, aby spróbować usunąć kolumn

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

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

Wynik

With Removal Code

Ja wou Chciałbym pozbyć się ostatnich 4 kolumn, więc dlaczego mój kod to nie robi?

Wiele Dzięki :)

+1

mieć swój wypróbowany zamiast je ukrywa. 'GvUsers.Columns [ "id"] Visible = FALSE? – ChrisWue

+0

Uważam, że 'gvUsers.Columns.Remove (" ID ");' działa .. jeśli nazwa kolumny (bez nagłówka/tekstu), ale nazwa kolumny jest identyfikatorem. – barlop

Odpowiedz

12

staram się po prostu ukryć zamiast pola.

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

Et cetera.

+5

Właściwie jego 'gvUsers.Columns [" ID "]. Visible = false;' – bnu

+2

dlaczego to jest, że 'gvUsers.Columns [" ID "]. Visibility = false;' (prawdopodobnie) działa dla niego, ale 'gvUsers. Columns.Remove ("ID"); "nie działa dla niego? – barlop

2

jeśli nie chcesz tworzyć kolumn automatycznie, gdy wiążą swoją DataSource, trzeba ustawić gvUsers.AutoGenerateColumns = false;

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

Chcę, aby automatycznie tworzyć kolumny, ale usunąć te, których nie potrzebuję. – craig1231

5

można też użyć gvUsers.Columns.RemoveAt(IndexOfColumn);

+0

Nie zapewnia to odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, zostaw komentarz pod swoim postem - zawsze możesz komentować swoje posty, a gdy już masz wystarczającą [reputację] (http://stackoverflow.com/help/whats-reputation), być w stanie [komentować dowolny wpis] (http://stackoverflow.com/help/privileges/comment). – War10ck

+1

Wystarczająco fair. Myślę, że byłem śpiący i nie przeczytałem dobrze pytania, moje przeprosiny. –

+0

@ War10ck możesz wyjaśnić, dlaczego nie odpowiada na pytanie? wydaje mi się, że pytający zapytał, jak usunąć kolumny, a osoba udzielająca odpowiedzi dała coś, co wyglądałoby na to, co usunęłoby kolumny. W takim przypadku jest to odpowiedź bardziej niż zaakceptowana odpowiedź, która mówiła o widoczności. Jak to się dzieje, że to nie odpowiada na pytanie? – 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; 
     } 
Powiązane problemy