Datagridview選択した行をカスタムオブジェクトにキャストする方法

コレクションを反復処理し、基になるデータである DataBoundItem プロパティを追跡する必要があります。

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);
}

上記のコードは、これを実現する方法を示しています (コードはフリーハンドで作成したため、構文エラーは許してください)。

DataBoundItem プロパティに関する msdn の記事は次のとおりです:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrow.databounditem(v=vs.110).aspx


あなたのDB構造はわかりませんが、

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

それを行う適切な方法です。しかし、私は Pilots を疑います あなたの場合は DataTable です 、そして必要なのは、これらのアイテムを適切な Class にキャストすることです type - どうしても撃たなければならないとしたら、あなたは Pilot を持っていると思います キャストする必要がある (単数) クラス。


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

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