So entfernen Sie Zeilen im Daten-grid-Ansicht, wo die checkbox aktiviert ist?
Ich bin mit C# .NET 2.0 in Visual Studio 2005.
Bin ich der Begegnung mit seltsamen Problem.
Es ist eine einfache Fenster-form mit nur einem DataGridView mit "column1" als checkbox (DataGridViewCheckboxColumn).
Dann, wenn das Kontrollkästchen in die Zelle markiert ist, will ich zum entfernen der Zeile überprüft.
Klingt wirklich einfach, aber es entfernt nicht alle markierten Zeilen irgendwie, und ich kann nicht wirklich herauszufinden, warum verhält es sich in dieser Weise.
Zum Beispiel habe ich 5 Zeilen und aktiviert alle Kontrollkästchen in jeder Zeile, aber es entfernt nur 3 Zeilen. Hat jemand das schon mal gesehen? Ist das ein bug oder mache ich etwas falsch?
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//when I click the button, all checked row should be removed
private void button1_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if ((bool)row.Cells[0].Value)
{
dataGridView1.Rows.Remove(row);
}
}
}
}
}
sorry, masato-san, mein Fehler. 🙂
Ich denke, dass running for-Schleife in umgekehrter Richtung ist besser und schneller Ansatz, weil Sie nicht extra Liste-Objekt zum speichern von toDelete Zeilen und auch brauchen Sie nur eine Schleife zu tun, die ganze Aufgabe.
vielen Dank für die Einsicht. Auch eine andere Ursache mein raster löschen sich unerwartet war, ich war nicht zu committen. "myGrid".CommitEdit(DataGridViewDataErrorContexts.Commit);
InformationsquelleAutor masato-san | 2011-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
dem es geschah, wenn eine Zeile entfernt die Zeilen, count dekrementiert auch so, wenn Sie Ihren code in einer for Schleife, und führen Sie es in umgekehrter Richtung würde es funktionieren einen Blick:
InformationsquelleAutor love Computer science
Sind Sie modifiend eine Sammlung während der Iteration.
Verwenden Liste löschen und entfernen Sie die Zeilen.
InformationsquelleAutor Chen Kinnrot
Den Sie Bearbeiten, eine Sammlung während der Iteration. Versuchen Sie, wie diese
Verwenden Sie zum Gießen in der if-Anweisung oben: if ((bool)Zeile.Felder[0].Wert)
InformationsquelleAutor Rajeev
diese Lösung gibt einen kleinen Fehler habe ich behoben, hinzufügen 1 Zeile 🙂
InformationsquelleAutor user1639870
@Chen Kinnrot, ist absolut auf das Geld! Sie wird immer nur löschen n % 2 Zeilen, die beim ausführen der Funktion, so, wenn Sie 10 Zeilen, dann löschen Sie 5, und 101 wäre 51, etc. Iteration über die Kollektion zu finden, welche Checkboxen überprüfen und entfernen Sie die Zeilen. Die bessere Lösung wäre es, fügen Sie einen Ereignis auf das Kontrollkästchen, das automatisch ausgeführt, wenn Sie klicken Sie auf button1.
InformationsquelleAutor bdparrish
Ausführliche code-Besuch:
http://www.gtuguide.com/2014/05/deleting-multiple-rows-in-gridview.html
InformationsquelleAutor user3663708