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

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top