Come convertire il contenuto DataGridView in un elenco <> di oggetti personalizzati?
-
21-12-2019 - |
Domanda
Sto lavorando a un'applicazione di Windows Forms, scritta con C #.
Ho trovato il suggerimento di qualcuno su come creare un List<>
dal controllo DataGridView
, ma ho bisogno di poco più aiuto su come estrarre i valori delle celle.
Ecco il codice dato;Diciamo che due colonne nel dataGridView1
sono Name
e Address
.
Come costruire l'oggetto List<ProjList>
?
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
ProjList = new List<ProjectMasterRec>();
foreach (DataGridViewCell dc in dr.Cells)
{
// build out MyItem
// based on DataGridViewCell.OwningColumn and DataGridViewCell.Value
// how do we code this?
}
ProjList.Add(item);
}
. Soluzione
Provalo in questo modo
Crea un elenco del tipo di classe
List<ProjectMasterRec>() ProjList = new List<ProjectMasterRec>();
.
Assicurarsi che il tipo di elenco appartiene al tipo dei dati in DataGridView
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
//Create object of your list type pl
ProjectMasterRec pl = new ProjectMasterRec();
pl.Property1 = dr.Cells[1].Value;
pl.Property2 = dr.Cells[2].Value;
pl.Property3 = dr.Cells[3].Value;
//Add pl to your List
ProjList.Add(pl);
}
. Altri suggerimenti
Se sei in grado di utilizzare LINQ, puoi fare qualcosa del genere:
var projectList = (from row in dataGridView1.Rows.OfType<DataGridViewRow>()
select new ProjectMasterRec()
{ Name = row.Cells["Name"].Value.ToString(),
Address = row.Cells["Address"].Value.ToString()
}).ToList();
. Quanto segue dovrebbe funzionare, myArray
dovrebbe essere una serie del tipo di cui è necessario, è possibile scoprire le dimensioni dell'array utilizzando (DataGrid1.DataSource as BindingSource).List.Count
.
(DataGrid1.DataSource as BindingSource).List.CopyTo(myArray, 0);
.