[英]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.