![](/img/trans.png)
[英]How to Delete a Row or Disable Delete Button for specific row in GridView?
[英]Delete specific row in dynamically generated gridview
我有一個小的GridView,可以容納某些物品。 這是在用戶單擊項目后生成gridview的代碼:
if (grdCarritoAddons.Rows.Count == 0)
{
dt.Columns.Add(new DataColumn("Name", typeof(System.String)));
dt.Columns.Add(new DataColumn("Price", typeof(System.String)));
}
else
{
dt = HttpContext.Current.Session["DataTable"] as DataTable;
}
Session["DataTable"] = dt;
DataRow dr1 = dt.NewRow();
dr1[0] = AddonName.ToString();
dr1[1] = Convert.ToDecimal(PriceAddon);
dt.Rows.Add(dr1);
grdCarritoAddons.DataSource = dt;
grdCarritoAddons.DataBind();
}
現在,我需要用戶能夠選擇一項並刪除特定項。 在ASPX頁面中,我已經添加了Delete命令,並在代碼中和GridView屬性上創建了一個空的RowDeleting方法。 它沒有用,我想出了一個可以解決但不是我需要做的解決方案。 基本上,它會擦除整個DataTable。
//grdCarritoAddons.DataSource = dt;
//grdCarritoAddons.DataBind();
//Session["DataTable"] = dt;
//Session.Remove("Total");
我嘗試了這個:
grdCarritoAddons.Rows.RemoveAt(grdCarritoAddons.SelectedRows[0].Index);
但是不行。 在ASP中不起作用。 謝謝你的幫助 :)
當前代碼:
dt = HttpContext.Current.Session["DataTable"] as DataTable;
dt.Rows.RemoveAt(grdCarritoAddons.SelectedRow.RowIndex);
但是它拋出的Object引用未設置為對象異常的實例。 如果我放置一個IF來檢查該行是否為空,它將根本不會執行...但是數據顯然不是空的。
這是錯誤:“ System.Web.UI.WebControls.GridViewRowCollection”不包含“ RemoveAt”的定義,並且沒有擴展方法“ RemoveAt”接受類型為“ System.Web.UI.WebControls.GridViewRowCollection”的第一個參數被發現
是的,如您在此處看到的那樣,此方法不存在。 您應該改為修改數據源,然后再對網格進行數據綁定。 DataRowCollection
具有RemoveAt
方法 。
dt.Rows.RemoveAt(grdCarritoAddons.SelectedRow.RowIndex);
grdCarritoAddons.DataSource = dt;
grdCarritoAddons.DataBind();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.