2016-12-29 90 views
1

我有一個datagridview有4列,數字和字符串作爲值。如何獲得連續的所有數據並將其放入單個IList中。如果不是在一個DataGridView,這是我會怎麼做 -到IList Datagridview的所有行<Object>

var formula1 = "=SUM(B3:B5)"; 
var formula2 = "=SUM(C3:C5)"; 
var formula3 = "=MAX(D3:D5)"; 

List<object> list1 = new List<object>() { "Item", "Cost", "Stocked", "Ship Date" }; 
List<object> list2 = new List<object>() { "Wheel", "20.50", "4", "3/1/2016" }; 
List<object> list3 = new List<object>() { "Door", "15", "2", "3/15/2016" }; 
List<object> list4 = new List<object>() { "Engine", "100", "1", "3/20/2016" }; 
List<object> list5 = new List<object>() { "Totals", formula1, formula2, formula3 }; 
IList<IList<Object>> list = new List<IList<Object>>() { list1, list2, list3, list4, list5 }; 

ValueRange VRange = new ValueRange(); 
VRange.Range = range; 
VRange.Values = list; 

但是,如果它的值是一個DataGridView,我不知道該怎麼做了。你能教一個小白菜嗎?謝謝。

+0

截至目前你如何填充'datagridview' –

+0

如果我這樣做它是我上面這樣做的方式,我可以填充「列表」,但如果這些值在datagridview中,我不知道如何去做。 – Ibanez1408

+0

這取決於你想要用你的列表做什麼。您可以創建DataGridViewRows的列表,或者您可以爲對象創建專用類並將它們存儲在列表中,或者可以創建動態ExpandoObjects ...以獲取更多詳細信息,也許您會得到更多答案。 – Antoine

回答

0

感謝您的時間。我把它像這樣...

 IList<IList<Object>> list = new List<IList<Object>>() { }; 
     for (var i = 0; i < dgvAttendance.Rows.Count - 1; i++) 
     { 
      List<object> lists = new List<object>() { dgvAttendance.Rows[i].Cells[0].Value.ToString(), 
       dgvAttendance.Rows[i].Cells[1].Value.ToString(), dgvAttendance.Rows[i].Cells[2].Value.ToString(), 
       dgvAttendance.Rows[i].Cells[3].Value.ToString() }; 
      list.Add(lists); 
     } 

     ValueRange VRange = new ValueRange(); 
     VRange.Range = range; 
     VRange.Values = list; 
1

您可以使用LINQ從你DataGridView創建一個List<List<object>>這樣:

var list = dgv.Rows.Cast<DataGridViewRow>().Where(r => !r.IsNewRow) 
       .Select(r => r.Cells.Cast<DataGridViewCell>().Select(c => c.Value).ToList()) 
       .ToList();