2015-10-23 26 views
1

如何完成将SelectedRowsDataGridView分配到多个列表?将DataGridView.SelectedRows分配到列表

我一直试图用foreachfor循环语句来做到这一点,但它没有产生预期的结果。它只显示第一行,而不管选择哪一行。

如何才能使for循环语句只搜索所选行?还是有更好的方法来做到这一点?

List<string> dTitle = new List<string>(); 
List<string> dSku = new List<string>(); 
List<string> dPrice = new List<string>(); 
List<string> dDesc = new List<string>(); 
List<string> dImage = new List<string>(); 

foreach (DataGridViewRow r in dgvProducts.SelectedRows) 
{ 
    for (int i = 0; i < dgvProducts.Rows.Count - 1; i++) 
    { 
     dSku.Add(dgvProducts.Rows[i].Cells[1].Value.ToString()); 
     dTitle.Add(dgvProducts.Rows[i].Cells[2].Value.ToString()); 
     dPrice.Add(dgvProducts.Rows[i].Cells[3].Value.ToString()); 
     dDesc.Add(dgvProducts.Rows[i].Cells[4].Value.ToString()); 
     dImage.Add(dgvProducts.Rows[i].Cells[5].Value.ToString()); 
    } 
} 

dgvProduct - the DataGridView

+0

没有错误,但没有产生预期的结果。它只显示第一行,而不管选择哪一行。我如何才能使for循环语句仅搜索所选行?还是有更好的方法来做到这一点? – francesF

回答

2

我觉得你不需要使用嵌套循环来做到这一点。

List<string> dTitle = new List<string>(); 
List<string> dSku = new List<string>(); 
List<string> dPrice = new List<string>(); 
List<string> dDesc = new List<string>(); 
List<string> dImage = new List<string>(); 

foreach (DataGridViewRow r in dgvProducts.SelectedRows) 
{ 
    dSku.Add(r.Cells[1].Value.ToString()); 
    dTitle.Add(r.Cells[2].Value.ToString()); 
    dPrice.Add(r.Cells[3].Value.ToString()); 
    dDesc.Add(r.Cells[4].Value.ToString()); 
    dImage.Add(r.Cells[5].Value.ToString()); 
} 
+0

哇,那工作。我现在觉得很愚蠢。谢谢! – francesF