簡體   English   中英

使用復選框Asp.net從gridview刪除不起作用

[英]Delete from gridview using checkbox Asp.net not working

我正在嘗試使用復選框從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);
            }
        }

這些是我遇到的錯誤

  • 運算符“-”不能應用於“方法組”和“ int”類型的操作數
  • 無法將[]的索引應用於類型為'的表達式
  • GridViewRowCollection”不包含“ RemoveAt”的定義
    並且找不到擴展方法'RemoveAt'接受類型為'GridViewRowCollection'的第一個參數(您是否缺少using指令或程序集引用?)

您有兩個主要問題:

1) GridView.SelectedRow不是集合屬性,而是標准屬性。 因此,您不能在其上使用Count屬性或數組索引。 要使用for循環在行之間進行迭代,請改用GridView.Rows.Count屬性。

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

2) GridViewRowCollection方法中不存在RemoveAt方法,您可以在此處看到。 您需要從數據源中刪除具有選定索引的行,然后再重新綁定到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();

類似問題:

使用復選框刪除gridview中的多行

刪除動態生成的gridview中的特定行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM