2016-04-29 17 views
1

Ich versuche, die ausgewählten Zeilen aus einem DataGridView zu entfernen, aber ich erhalte die folgende Fehlermeldung:Entfernen der ausgewählten Zeilen aus einem Datagridview

angegebene Umwandlung ungültig ist.

Auf dieser Codezeile:

this.DGV_INVOICE.Rows.Cast<DataGridViewRow>().Where(ROW => (bool?)ROW.Cells[0].Value == true).ToList().ForEach(x => { this.DGV_INVOICE.Rows.Remove(x); }); 

Zweite Art und Weise zu versuchen, alle die ausgewählten Zeilen zu entfernen:

foreach (DataGridViewRow RowToDelete in DGV_INVOICE.Rows) 
{ 
    object Cell = RowToDelete.Cells["Edit_Checkbox"].Value; 

    if (Cell.ToString() == "True") 
    { 
     // Allow user to delete record from invoice 
     DGV_INVOICE.Rows.Remove(RowToDelete); 
    } 
} 
+0

I schlage vor, die Art von 'this.DGV_INVOICE.Rows' zu betrachten. Es hört sich so an, als könnte es sich beschweren, dass es keine explizite Konvertierung gibt. – DevNoob

+0

Versuchen Sie es mit einem Ternär, um zu überprüfen, ob '.Value 'null ist und nicht auf ein nullbares' bool' umwandeln und verwenden Sie einfach ein normales 'bool' –

+0

@DevNoob dort ist keine Eigenschaft für den Datentyp für die Spalte "datadridview", wie ich weiß und gesucht habe – samer

Antwort

3

Schleife rückwärts durch .Rows Sammlung Ihres Datagridview, so dass Sie nicht verlieren der Index beim Entfernen

for (int i = DGV_INVOICE.Rows.Count - 1; i >= 0; i--) 
{ 
    object Cell = DGV_INVOICE.Rows[i].Cells["Edit_Checkbox"].Value; 

    if (Cell.ToString() == "True") 
     DGV_INVOICE.Rows.RemoveAt(i); 
} 
Verwandte Themen