У меня есть небольшой 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 я уже добавил команду «Удалить» и создал пустой метод RowDeleting в коде и свойствах GridView. Он не работает, и я придумал решение, которое несколько работает, но не то, что мне нужно сделать. Это в основном вытирает весь 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);
Но его метания ссылка на объект не указывает на экземпляр объекта исключения. Если я поставлю IF, чтобы проверить, является ли строка нулевой, она вообще не будет выполняться ... но данные, очевидно, не пусты.
_ «Не работает в ASP» _ Что это значит, вы получаете исключение или нежелательный результат? Что происходит именно так? –
Это ошибка: «System.Web.UI.WebControls.GridViewRowCollection» не содержит определения для «RemoveAt» и никакого метода расширения «RemoveAt», принимающего первый аргумент типа «System.Web.UI.WebControls.GridViewRowCollection» (вам не хватает директивы using или ссылки на сборку?) –
Да, этот метод не существует, поскольку вы можете видеть [здесь] (http://msdn.microsoft.com/en-us/library/System. Web.UI.WebControls.GridViewRowCollection_methods (v = vs.110) .aspx). Вместо этого вы должны изменить источник данных и затем привязать таблицу к сетке. 'DataRowCollection' имеет метод' 'RemoveAt' '(http://msdn.microsoft.com/en-us/library/system.data.datarowcollection.removeat (v = vs.110) .aspx). –