Filtrowanie w DataGridView

0

W DataGridView jest metoda usuwania zaznaczonych wierszy klawiszem DELETE.
Ja potrzebuję metodę aby jakimś zdarzeniem np. ButtonClick zaznaczone wiersze zostały, a reszta została usunięta.

0

Nie używam ale GridView ma SelectedRows.
Iterujesz po wszystkich wierszach i jeśli nie jest w selectedrows to usuwasz.

0

Skleciłem taki program - niby działa ale nie wiem czy o to chodzi ?

private void button1_Click(object sender, EventArgs e)
{
string wynik = " " ;
int suma_wierszy = dataGridView1.SelectedRows.Count;
int x = 1;
foreach (DataGridViewRow wiersze in dataGridView1.SelectedRows)
{
if (suma_wierszy != x)
{
wynik = wynik + " Id = ' " + wiersze.Cells[0].Value.ToString() + " ' or ";
}
else
{
wynik = wynik + " Id = ' " + wiersze.Cells[0].Value.ToString() + " ' ";
}
x++;
}
certyfikatyBindingSource.Filter = wynik;

0

Tak jak napisał jacek.placek, tylko co ważne iterujesz od końca.

Pod buttona wstaw kod:

                for (int i = dataGridView1.Rows.Count - 1; i >= 0; i--)
                {
                    if (!dataGridView1.Rows[i].Selected) ((DataRowView)dataGridView1.Rows[i].DataBoundItem).Row.Delete(); 
                }

(chyba, że operujesz bezpośrednio na gridzie, wtedy usuwasz wiersz grida, ale lepiej operować na tabeli, a grid ma tylko to prezentować)

Jeśli masz ustawioną właściwość AllowUserToAddRows na true, to iterowanie zaczynasz od dataGridView1.Rows.Count - 2, gdyż wtedy ostatni wiersz w gridzie jest tym pustym wierszem do dodania.

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