【发布时间】:2021-06-21 05:18:11
【问题描述】:
我正在尝试通过代码更新 c# 中 datagridview 中的复选框列的值,但它不起作用。这是代码:
public frmShowData()
{
InitializeComponent();
dgvAlumnos.AutoGenerateColumns = false;
dgvAlumnos.ReadOnly = false;
updateAttendance();
}
public void updateAttendace(){
foreach (DataGridViewRow r in dgvAlumnos.Rows)
{
if (attendance[r.Index] == true)
{
r.Cells[2].Value = true;
}
else
{
r.Cells[2].Value = false;
}
}
}
出勤率是我拥有值的布尔数组。
datagridview的第2列是复选框列。
但是,这些更改在 datagriview 中不可见。 我在表单构造中使用此代码。
提前致谢。
【问题讨论】:
-
数据网格的底层来源是什么?您通常必须更改源,然后数据网格应自行更新
-
顺便说一句,
if这样的语句可以简化 -> 你不需要 if 开头:r.Cells[2].Value = attendance[r.Index]; -
我建议您复制/粘贴实际代码,而不是重新输入代码以避免输入错误。对于初学者,在表单的构造函数中,将找不到方法
updateAttendance();,因为下面的方法拼写不同。 -
另外,构造函数中的代码有点混乱。构造函数中缺少的是填充数据的网格的“位置”吗?从发布的代码来看,在构造函数的最后一行,当代码调用
updateAttendance()方法时……foreach循环将永远不会进入,因为网格没有行。除非您没有显示某些内容,否则没有任何更新是有道理的。
标签: c# checkbox datagridview updating