Ok Jungs, ich dachte, das wäre einfacher als es ist.So erhalten Sie Spalten in DataGridViewRowSelectedRowCollection
public static DataRowCollection ToRows(this DataGridViewSelectedRowCollection Rows)
{
DataTable table = new DataTable();
foreach (DataColumn column in Rows[0].DataGridView.Columns)
{
table.Columns.Add(column);
}
foreach (DataGridViewRow row in Rows)
{
DataRow newRow = ((DataRowView)row.DataBoundItem).Row;
table.ImportRow(newRow);
}
return table.Rows;
}
Ich versuche, die Spalten einer Zeile in einem DataGridViewSelectedRowCollection zu bekommen. Der obige Code löst einen InvalidCast-Fehler in der Tabelle.Column.Add (Spalte) aus, da versucht wird, DataGridViewColumns in DataTable-Spalten zu konvertieren. Ich habe keinen Zugriff auf DataGridView, da ich in einer statischen Methode bin, die die DataGridViewSelectedRowCollection erweitert und keinen Zugriff auf DataGridView hat.
Wie kann ich die columns-Auflistung in ein DataColumns-Objekt umwandeln?
Wenn Sie sagen, was die Datenquelle von 'DataGridView' ist und warum brauchen Sie solche Datentabelle auf der erstellen Fliegen, vielleicht kann eine bessere Lösung vorgeschlagen werden. –
Wie Sie sehen können, ist die Methode statisch und eine Erweiterung. Ich habe mehrere Raster, die in der Lage sein müssen, die ausgewählten Zeilen in einem Raster zu erhalten und die Zeilen an die aufrufende Aktualisierungsmethode zurückzugeben. Ich könnte das einfach in der Aufrufmethode tun, aber jedes Mal, wenn ich das machen möchte, muss ich den gleichen Code kopieren, was bedeutet, dass ich jedes Mal, wenn ich den Code an einem Ort aktualisiere, überall anders aktualisiert werden muss. –
Sind alle Gitter an DataTables gebunden? Ist das Ziel, ausgewählte Datenzeilen aus einem Raster zu bekommen? –