C#gridview如何删除索引

时间:2013-06-10 08:08:04

标签: c# asp.net gridview

嘿伙计们,我想知道如何删除已插入视图列表中的项目

实际上已经在网上搜索了一段时间,找不到有用的东西。

这是我的代码我希望能够通过列表删除我已添加的内容谢谢。

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.";           
  }
}

3 个答案:

答案 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方法中本地声明的。那么你是如何努力实现这一目标的?