Datagrid Zelle nach inhalt löschen

theplake

Erfahrenes Mitglied
Hi Leute

Folgendes Problem:
Ich habe ein Datagrid mit jedermenge Spalten und gefüllter Zeilen.ich möchte ihn jetzt alle zeilen nach einem bestimmten zelleninhalt (z.b. der Wert 0) durchsuchen lassen und diese Zeile dann löschen.

Kann mir da einer kurz auf die Sprünge helfen?
 
Hab mir das jetzt so gebastelt:
Code:
 for (int n = 0; n < dataGridView1->RowCount; n++)
			 {
				 String ^inha = dataGridView1[1, n]->Value->ToString();
				 if (inha == "0")
				 {
					Was hier rein?
				 }
					
			 }

Wie kann ich jetzt diese Zeile löschen?
 
Hab leider keine IDE hier.
Aber es müsste im DataGridView eine Eigenschaft Rows existieren und dort eine Funktion Remove oder RemoveAt. Darüber könntest du löschen.
 
ja hab ich auch schon versucht nur wenn ich in die if schleife folgendes einsetze:

datagridview1->rows->remove(datagridview1->rows->currentrows);

stürzt mir das Programm ab bzw. hängt sich auf.
 
hi

ein kleines Beispiel (nicht getest, aber vom Prinzip her gehts so:
C#:
DataGridViewRow row;
for(int i = dataGridView.Rows.Count; i>= 0; i--)
{
    row = dataGridView.Rows[i];
    if (row.Cells[0].Value.ToString() == "0")
    {
        dataGridView.Rows.Remove(row);
    }
}
 
Ich hab das jetzt so erledigt:
Code:
 DataGridViewRow ^row = nullptr;	
String ^inha;
	 for (int n = 0; n < dataGridView1->RowCount-1; n++)
	 {
		 inha = dataGridView1[1, n]->Value->ToString();
		 if (inha == "0")
			 {
			row = dataGridView1->Rows[n];
			 dataGridView1->Rows->Remove(row);
			 //////Pause
			 for (int z = 0; z < 1000; z++);
			 }
Das ganze ist in einem Button event.Das zweite Problem was ich damit habe ist das er nicht alle "0" zeilen löscht.Nur wenn ich mehrmals den button drücke verschwinden allmählich alle.Kann mir jemand sagen warum das so ist?
 
Ja, weil sich der Index der folgenden Zeilen weiter ändert. Daher hab ich im Beispiel die Schleife auch rückwärts laufen lassen ;)
 
Ja das hab ich mir dann auch gedacht. Darum hab ich jetzt anstatt remove(row) diesen code genommen:
Code:
this->datagridView1->rows[n]->visible = false
und damit ging es dann wunderbar.
 
Zurück