如何在运行时填充datagridview单元格?

时间:2013-10-01 20:27:14

标签: c# winforms datagridview

我需要我用datagridview填写一些列表中的值。 我试着这样做:

List<List<object>> objList1 = new List<List<object>>
    {
         new List<object> {null, null, null, "Some Value"},
         new List<object> {"Some text", "Another Text", 212}
    };

List<List<object>> objList2 = new List<List<object>>
    {
         new List<object> {null, null, null, "Some Value from 2 list"},
         new List<object> {"Some text 3", "Another Text 5", 34}
    };

foreach (var objList in objList1)
    {
         dataGridView.Rows.Add();
         for (int i = 0; i < objList.Count -1; i++)
         {
              dataGridView.Rows[dataGridView.RowCount - 1].Cells[i].Value = objList[i] != null ? objList[i].ToString() : "";
         }
    }
    dataGridView.Rows.Add();

foreach (var objList in objList2)
    {
         dataGridView.Rows.Add();
         for (int i = 0; i < objList.Count - 1; i++)
         {
             dataGridView.Rows[dataGridView.RowCount - 1].Cells[i].Value = objList[i] != null ? objList[i].ToString() : "";
         }
    }
    dataGridView.Rows.Add();

但是我没有填充datagridview,而是只填充了最后一行:

enter image description here

1 个答案:

答案 0 :(得分:1)

  

但是让我的datagridview填充后,我只得到最后一行填充

您将AllowUserToAddRow属性设置为true。所以,当你写作时:

dataGridView.Rows[dataGridView.RowCount - 1]

每次添加新行时,都可以访问“替换”的新行。它应该是

dataGridView.Rows[dataGridView.RowCount - 2]

请注意,dataGridView.Rows.Add()方法为您提供添加行的索引。所以你也可以写:

int addedRowindex = DataGridView.Rows.Add();
DataGridView.Rows[addedRowindex].Cells[i].Value = ...

我不确定你究竟想要做什么。如果我将RowCount - 1替换为RowCount - 2,我会得到:

enter image description here


另外

for (int i = 0; i < objList.Count -1; i++)

不应该

for (int i = 0; i <= objList.Count - 1; i++) 

结果:

enter image description here