Datagridview, wie die ausgewählte Zeile in ein benutzerdefiniertes Objekt umgewandelt wird

Datagridview, wie die ausgewählte Zeile in ein benutzerdefiniertes Objekt umgewandelt wird

Sie müssen die Sammlung durchlaufen und nach der DataBoundItem-Eigenschaft suchen, die die zugrunde liegenden Daten sind.

var pilots = new List<Pilots>(grid.SelectedRows.Count);

for(int index = 0; index < grid.SelectedRows.Count; index++)
{
   var selectedRow = grid.SelectedRows[index];
   var pilot = (Pilots)selectedRow.DataBoundItem;

   pilots.Add(pilot);
}

Der obige Code zeigt, wie Sie dies erreichen können (ich habe den Code freihändig erstellt, also verzeihen Sie alle Syntaxfehler).

Hier ist der msdn-Artikel zur DataBoundItem-Eigenschaft:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.databounditem(v=vs.110).aspx


Ich weiß nicht, was Ihre DB-Struktur ist, aber

var selectedPilots = dgvPilots.SelectedRows.Cast<Pilots>().ToList();

ist der richtige Weg, es zu tun. Allerdings vermute ich Pilots in Ihrem Fall ist es eine DataTable , und Sie müssen diese Elemente in den richtigen Class umwandeln type - Wenn ich schießen müsste, würde ich sagen, du hast eine Pilot (singuläre) Klasse, in die gecastet werden sollte.


List<int> indexes = DataGrid1.SelectedRows.Cast<DataGridViewRow>().Select(x => x.Index).ToList();

            foreach (i in indexes)
            {
                Pilots Pilot = (Pilots)DataGrid1.Rows[i].DataBoundItem;
            }