[C#] Jak usunac puste wiersze w DataGridView

Odpowiedz Nowy wątek
2009-12-16 14:29
0

Jak usunac puste wiersze z DataGridView, mecze sie z tym od dłuzszego czasu, napisałem jakis kodzik i nie działa mi dobrze, wyskakuje komunikat: "Nie mozna usunac nieprzekazanego wiersza" a kod mam taki:

foreach(DataGridViewRow dr in dataGridView1.Rows)
                {
                    if (dr.Cells[0].Value == null && dr.Cells[1].Value == null && dr.Cells[2].Value == null)
                        dataGridView1.Rows.RemoveAt(dr.Index);

                }

Moj dataGridView1 składa sie z 3 kolum. Czemu ten kod nie usuwa pustych wierszy? Aha, nie chodzi mi o ten pusty wiersz który sie tworzy automatycznie tylko o wiersze ktore beda powstawały gdy user najpierw cos wpisze do komorek danego wiersza a pozniej to usunie.

Pozostało 580 znaków

2009-12-16 21:52
0

dla jednokolumnowego zrobiłem w ten sposob i usuwa

            for (int i = 0; i < dataGridView1.RowCount-1; i++)
            {
                if (dataGridView1.Rows[i].Cells[0].Value == null)
                    dataGridView1.Rows.RemoveAt(i);
            }

robiąc tak jak Ty robiłeś, pojawiał się błąd, wyglądało jakby chciało usuwać ostatni wiersz ten co jest pusty zawsze


Pozostało 580 znaków

2009-12-17 10:17
0

troche to dziwnie działa, bo zamist usunac wszystkie puste wiersze ten kod kasuje przewaznie po 2 puste wiersze przy kazdym jego odpaleniu

Pozostało 580 znaków

2009-12-17 12:10
0

Myślałem ze chodzi i jeden.
Wrzuc to po prostu w petle while, cos takiego mniej więcej

            bool deleted = false;
            do
            {
                deleted = false;
                for (int i = 0; i < dataGridView1.RowCount - 1; i++)
                {
                    if (dataGridView1.Rows[i].Cells[0].Value == null)
                    {
                        dataGridView1.Rows.RemoveAt(i);
                        deleted = true;
                    }
                }
            }while (deleted == true);

Pozostało 580 znaków

2009-12-17 12:46
0

Usuwanie elementów kolekcji przy użyciu pętli foreach to średni pomysł, bo ta pętla jest tylko do odczytu.

@dark_astray - po co dwie pętle?

Ja zacząłbym usuwanie po ludzku, czyli od końca, bo to nie powoduje zmiany indeksów kolejnych elementów ;]


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2009-12-17 13:06
0

(po to że for usuwał wiersz, indeksy sie zmieniały, i nie usuwało wszystkiego dlatego był while)

nie pomyślałem o usuwaniu od końca ^^ tak będzie lepiej.
Niech pan goodfather potestuje


Pozostało 580 znaków

2009-12-17 16:56
0
dark_astray napisał(a)

(po to że for usuwał wiersz, indeksy sie zmieniały, i nie usuwało wszystkiego dlatego był while)

Gwoździe też wbijasz wiertarką? ;P


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2009-12-17 17:25
0
somekind napisał(a)
dark_astray napisał(a)

(po to że for usuwał wiersz, indeksy sie zmieniały, i nie usuwało wszystkiego dlatego był while)

Gwoździe też wbijasz wiertarką? ;P

na upartego, dało by się ;-P


Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0