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.
Nie używam ale GridView ma SelectedRows.
Iterujesz po wszystkich wierszach i jeśli nie jest w selectedrows to usuwasz.
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;
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.