我正在尝试使用复选框从gridview中删除项目,但我已经删除了所有项目。
DataTable data = (DataTable)(GridView2.DataSource);
data.Rows.RemoveAt(GridView2.Rows.Count - 1);
data.AcceptChanges();
GridView2.DataSource = dt;
GridView2.DataBind();
然后我正在尝试这个
for (int i = GridView2.SelectedRow.Count - 1; -1 < i; i--)
{
object objChecked = GridView2.SelectedRow[i].Cells[0].Value;
if ((objChecked != null) && !(bool)objChecked)
{
GridView2.Rows.RemoveAt(i);
}
}
这些是我遇到的错误
答案 0 :(得分:0)
您有两个主要问题:
1)GridView.SelectedRow
不是集合属性,它是标准属性。因此,您既不能使用Count
属性也不能使用数组索引。要使用for
循环在行之间进行迭代,请改用GridView.Rows.Count
属性。
for (int i = 0; i < GridView2.Rows.Count; i++)
{
// do something
}
2)RemoveAt
方法中不存在GridViewRowCollection
方法,您可以看到here。您需要从数据源中删除具有所选索引的行,然后重新绑定到GridView
。
因此,使用foreach
循环来迭代网格行,并对每个复选框的Checked
属性进行检查,如下面的示例所示。
foreach (GridViewRow row in GridView2.Rows)
{
CheckBox chk = row.FindControl("CheckBoxName") as CheckBox;
if (chk != null && chk.Checked)
{
// delete from data source (e.g. DataTable), not GridView row
dt.Rows.RemoveAt(row.RowIndex);
// you can execute delete query against DB here
}
}
// rebind the grid
GridView2.DataSource = dt;
GridView2.DataBind();
类似问题: