1

やあみんな、リスト ビューに挿入されたアイテムを削除する方法を知りたい

実際にしばらくの間ネットを検索していて、役立つものを見つけることができません。

これが私のコードです。リストから追加したものを削除できるようにしたいのですが、ありがとうございます。

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

3 に答える 3

2

これを試して:

CommandNameGridview マークアップ内の削除ボタンに追加します。

<asp:Button Text="Delete" runat="server" CommandName="Delete" />

イベントを処理RowDeletingし、データソースからアイテムを削除してから、グリッドビューを再バインドします。ソース コードを次のように変更します。

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);
}
于 2013-06-10T08:43:24.900 に答える
0

DataKey 属性を使用してオープンソースのプライマリキーを gridview にバインドし、行コマンドでこのデータキーを使用してデータ ソースからアイテムを削除し、変更されたデータ ソースでグリッドを再バインドします。

于 2013-06-10T08:14:08.880 に答える
0

コレクションからアイテムを削除して再バインドする必要があります(他の回答で述べたように)

List<Book> listしかし、Page_Load メソッドでローカルに宣言されていることがわかります。では、どのようにこれを達成しようとしていますか?

于 2013-06-10T08:30:13.227 に答える