2015-10-23 31 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