我试图手动将数据添加到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;。
有人能看出为什么会这样吗?我可能真的很蠢。
答案 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)
我查看了其余的代码,发现了问题。显示代码没有问题,问题实际上是在数据库中。出于某种原因,所有数据实际上都在数据库的一行中,下面有两个空白行。