[英]How to get the row index of multiple checked in checkbox column of datagridview C#
我试图删除未绑定的datagridview中的所有标记/选中的行。 复选框列以编程方式添加。 我知道我必须用
RequestedEmpGrid.Rows.Remove(RequestedEmpGrid.Rows[ForRequestRow.Index]);
从网格中删除该行。 但是,我在获取datagridview中多个已检查行的行索引时遇到了麻烦。 我的循环无法正常工作。 救命?
//REMOVE ALL CHECKED
foreach (DataGridViewRow ForRequestRow in RequestedEmpGrid.Rows)
{
if (Convert.ToBoolean(ForRequestRow.Cells[MarkColumn.Name].Value) == true)
{
RequestedEmpGrid.Rows[ForRequestRow.Index].Selected = true;
RequestedEmpGrid.Rows.Remove(RequestedEmpGrid.Rows[ForRequestRow.Index]);
}
}
你为什么不尝试
RequestedEmpGrid.Rows.Remove(ForRequestRow)
它只会从gridview中删除行,而不是从Data source中删除行,因此不要重新绑定gridview,因为它将再次添加已删除的行。
而且,如果您也想从数据源中删除,只需从数据库中删除选定的行,然后重新绑定gridview。
您可以尝试以下代码:
foreach (DataGridViewRow requestRow in RequestedEmpGrid.Rows)
{
if (Convert.ToBoolean(requestRow.Cells[MarkColumn.Name].Value))
{
RequestedEmpGrid.Rows.Remove(requestRow);
}
}
或这个:
foreach (DataGridViewRow requestRow in RequestedEmpGrid.Rows)
{
if (Convert.ToBoolean(requestRow.Cells[MarkColumn.Name].Value))
{
RequestedEmpGrid.Rows.RemoveAt(requestRow.Index);
}
}
更新 :那呢?
for (int i = RequestedEmpGrid.Rows.Count; i >= 0; i--)
{
var row = RequestedEmpGrid.Rows[i];
if (Convert.ToBoolean(row.Cells[MarkColumn.Name].Value))
{
RequestedEmpGrid.Rows.RemoveAt(i);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.