1

我正在开发一个用 C# 编写的 Windows 窗体应用程序。

我发现有人建议如何List<>DataGridView控件创建一个,但我需要更多关于如何提取单元格值的帮助。

这是给出的代码;假设dataGridView1areName和中的两列Address
如何构建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);
}
4

3 回答 3

6

试试这种方式

创建您的班级类型列表

List<ProjectMasterRec>() ProjList = new List<ProjectMasterRec>(); 

确保列表类型属于 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);     
}
于 2014-01-10T05:22:25.193 回答
2

如果您能够使用 LINQ,则可以执行以下操作:

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();
于 2014-01-10T05:33:11.433 回答
0

以下应该可以工作,myArray应该是您需要的类型的数组,您可以使用(DataGrid1.DataSource as BindingSource).List.Count.

(DataGrid1.DataSource as BindingSource).List.CopyTo(myArray, 0);
于 2019-10-04T16:40:48.047 回答