向DataGridView添加行时,会添加一个新的空行,并将数据添加到当前行的末尾

时间:2016-03-26 17:43:08

标签: c# winforms datagridview

我试图手动将数据添加到DataGridView(显示学生一年中出席的网格视图)。问题是,当我向DataGridView添加一行数据而不是正在创建的新行并且将数据添加到它时。将生成一个新的空白行,并将数据添加到顶行。以下是相关代码:

foreach (IndividualAttendanceRecord rec in DatabaseInterfacer.GetRecords("pi404"))
{
    if (dataGrid.ColumnCount < rec.Attendance.Count)
        dataGrid.ColumnCount = rec.Attendance.Count;

    List<String> row = new List<string>();
    foreach (string entry in rec.Attendance)
        row.Add(entry);

    string[] rowArray = row.ToArray<string>();
    dataGrid.Rows.Add(rowArray);
}

执行此代码会使DataGridView包含一行中的所有数据,然后是底部的两个空行。

任何帮助?

编辑: 仍然完全被这个困扰。我已经简化了我的代码,并在foreach声明中添加了一些测试行,但我不明白它为什么输出它的方式。这是我的新代码:

foreach (IndividualAttendanceRecord rec in DatabaseInterfacer.GetRecords("pi404"))
        {
            if (dataGrid.ColumnCount < rec.Attendance.Count)
                dataGrid.ColumnCount = rec.Attendance.Count;

            string[] row = rec.Attendance.ToArray<string>();
            dataGrid.Rows.Add(row);

            dataGrid.Rows.Add("1", "2", "3");
            dataGrid.Rows.Add("One", "Two", "Three");
        }

以下是输出内容:http://i.imgur.com/f45mlod.png

我不知道为什么它仍然将IndividualAttendanceRecord中的所有信息放在它自己的一行中,然后创建一个空行并放置&#34; 1 2 3&# 34;和&#34;一两三&#34;。

有人能看出为什么会这样吗?我可能真的很蠢。

2 个答案:

答案 0 :(得分:1)

控件显示您所说的内容:

首先,您通过将ColumnCount设置为列表中的项目数来网格创建一些列:

dataGrid.ColumnCount = rec.Attendance.Count;

然后使用Add( params object[] values)方法添加包含某些值的行。将数组传递给方法时,它将添加一行并将这些值用作列:

string[] rowArray = row.ToArray<string>();
dataGrid.Rows.Add(rowArray);

如果要在单个列中添加所有值,可以选择:

dataGrid.ColumnCount = 1;
foreach (string entry in rec.Attendance)
    dataGrid.Rows.Add(entry);

答案 1 :(得分:0)

我查看了其余的代码,发现了问题。显示代码没有问题,问题实际上是在数据库中。出于某种原因,所有数据实际上都在数据库的一行中,下面有两个空白行。