【问题标题】:Delete from gridview using checkbox Asp.net not working使用复选框 Asp.net 从 gridview 中删除不起作用
【发布时间】:2018-05-07 21:56:51
【问题描述】:

我正在尝试使用复选框从网格视图中删除项目,但我有这个并删除了每个项目。

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);
            }
        }

这些是我遇到的错误

  • 运算符“-”不能应用于“方法组”类型的操作数和 'int'
  • 无法将带有 [] 的索引应用于类型表达式 '
  • GridViewRowCollection' 不包含“RemoveAt”的定义
    并且没有扩展方法“RemoveAt”接受类型的第一个参数 可以找到“GridViewRowCollection”(您是否缺少使用 指令还是程序集引用?)

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    你有两个主要问题:

    1) GridView.SelectedRow 不是集合属性,它是标准属性。因此,您既不能在其上使用Count 属性也不能使用数组索引。要使用for 循环在行之间迭代,请改用GridView.Rows.Count 属性。

    for (int i = 0; i < GridView2.Rows.Count; i++)
    {
        // do something
    }
    

    2) GridViewRowCollection 方法中不存在RemoveAt 方法,可以看到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();
    

    类似问题:

    delete multiple rows in gridview using checkboxes

    Delete specific row in dynamically generated gridview

    【讨论】:

    • 好的,感谢您提供此信息,但是当我将此 CheckBox chk = row.FindControl("CheckBoxName") 添加为 CheckBox;并检查一行是否为空
    • 它仍然会删除所有未检查的项目,如果我检查所有项目,它会说位置 1 没有行
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 2010-09-06
    • 2023-04-09
    • 2015-04-11
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多