实际上已经在网上搜索了一段时间,找不到有用的东西。
这是我的代码我希望能够通过列表删除我已添加的内容谢谢。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<Book> list = (List<Book>)Session["SelectedBooks"];
if (list != null)
{
GridViewProducts.DataSource = list;
GridViewProducts.DataBind();
}
//list of borrows
}
}
protected void GridViewProducts_RowCommand(object sender,
GridViewCommandEventArgs e)
{
try
{
if (e.CommandName == "Remove")
{
GridViewProducts.DeleteRow(GridViewProducts.SelectedIndex);
}
}
catch (Exception)
{
lblInfo.Text = "Can not remove selected book from Bag.";
}
}
答案 0 :(得分:2)
试试这个:
将CommandName
添加到Gridview标记内的删除按钮:
<asp:Button Text="Delete" runat="server" CommandName="Delete" />
处理RowDeleting
事件,从数据源中删除该项,然后重新绑定gridview。像这样修改你的源代码:
private List<Book> SelectedBooks
{
get
{
return Session["SelectedBooks"] as List<Book>;
}
set
{
Session["SelectedBooks"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
var selectedBooks = SelectedBooks;
if(selectedBooks == null)
{
// Populate the selected books first time
// SelectedBooks = ...
}
BindGridview(SelectedBooks);
}
}
private void BindGridview(List<Book> bookList)
{
GridViewProducts.DataSource = bookList;
GridViewProducts.DataBind();
}
protected void GridViewProducts_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
SelectedBooks.RemoveAt(e.RowIndex);
BindGridview(SelectedBooks);
}
答案 1 :(得分:0)
使用DataKey属性将开源的某些主键绑定到gridview,并在行命令中使用此数据键从数据源中删除该项,然后使用修改后的数据源重新绑定网格。
答案 2 :(得分:0)
您必须从集合中删除项目并重新绑定(如其他答案中所述)
但是我看到List<Book> list
是在Page_Load方法中本地声明的。那么你是如何努力实现这一目标的?