2011-07-09 10 views
1

こんにちは私は選択されたボタンを自動生成しているグリッドビューに表示される1ページのアイテムのリストを持つWebページを作成しようとしています、彼らはこのボタンをクリックして、セッションに格納されています。別のページでは、選択した項目を含むセッションがグリッドビューに表示されます。VB.NETのセッションからgridviewの選択行を削除するには?

ここで、自動的に生成された削除ボタンをクリックして、削除したいアイテムをgridviewから削除できるようにしたいですか?これはどこに問題があり、私を助けるために何かが必要です。

私は、これは私は、ページに次のようにあるコレクションを作るために私のコードをロードしていること

Public Function addToCollection() As Collection 
    If Session("Order") Is Nothing Then 
     colOrder = New Collection 
     Session("Order") = colOrder 
    Else 
     colOrder = Session("Order") 
    End If 
    Return colOrder 
End Function 

ためのコードである私のインデックスページ(利用可能な製品を示しページ)に機能を持っています:次のように

  addToCollection() 
    Dim gvRow As GridViewRow = gvCDs.SelectedRow 
    Dim objOrder As Order = New Order 
    objOrder.ID = gvRow.Cells(1).Text 
    objOrder.Title = gvRow.Cells(2).Text 
    objOrder.Artist = gvRow.Cells(3).Text 
    objOrder.Price = gvRow.Cells(5).Text 
    colOrder.Add(objOrder) 

    Session("Order") = colOrder 

は、私の他のページに私がGridViewの中でセッションを表示:

 Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete 

    gvOrder.DataSource = Session("Order") 
    gvOrder.DataBind() 

End Sub 

グリッドビューには、各行の隣に自動生成された削除ボタンがあり、ボタンをクリックするとグリッドビューからアイテムが削除されるようにしたい。私はgvOrder_DeletedRowサブでそれを持っている必要があることを知っている、私はちょうどセッションからアイテムを削除し、ページをリロードする必要があることを知っている私はどのようなコードを書くのかわからない

+0

あなたがこれまでに –

+0

@Timを行っているあなたのコード投稿してくださいことができます - 私はcolOrderを使用するには、以下の私の答えを更新しましたが、基本的な原理は以前と同じです。これは私が正しく欲しいものを表示し gvOrder.DataSource =セッション(「注文」) gvOrder.DataBind() : – Tim

答えて

1

GridView.OnRowDeletingメソッドを処理する必要があります。あなたのコードビハインドでメソッドを作成します:あなたのASPXページ

Sub GridView1_RowDeleting(sender As Object, e As GridViewDeleteEventArgs) 

    ' Handle the removal of the row here 
    ' The index of the row will be in e.RowIndex property 

End Sub 

を、あなたは、GridViewコントロールのためのマークアップにonRowDeleting =「GridView1_RowDeleting」を追加する必要があります。

どのように行を削除するかは、使用しているデータソースによって異なります(たとえば、データベースをデータソースとして使用している場合は、データベースも更新しますか?)。あなたのコードの一部を投稿すると、より良い、より詳細な回答が得られます。しかし、これはあなたが正しい方向を指すようにするはずです。

編集が を追加するには、あなたは、いくつかのコードを掲載、しかし、それを取り除かので、私は私の答えを続行するには、以下のことを掲示しています:

Protected Sub Page_LoadComplete(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LoadComplete 

    gvOrder.DataSource = Session("Order") 
    gvOrder.DataBind() 

End Sub 


Protected Sub gvOrder_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvOrder.RowDeleting 

    Session.RemoveAt(gvOrder.SelectedRow.RowIndex) 
End Sub 

あなたgvOrder_RowDeletingメソッドのコードはかなりものではありませんあなたが欲しい。 Sessionオブジェクトにいくつ持っているかによっては、そのインデックスにあるものを削除するか、範囲外のインデックス例外を取得することになります。 、選択した行を削除するバックセッションにオブジェクトを配置し、GridViewコントロールにバインドセッションのうち、オブジェクトを取得するには、基本的に

Protected Sub gvOrder_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvOrder.RowDeleting 

    ' Session stores everything as an object, so its best to cast the object to the type it really is 
    colOrder = CType(Session("Order"), colOrder) 
    colOrder.RemoveAt(e.RowIndex) 
    Session("Order") = colOrder 
    gvOrder.DataSource = colOrder 
    gvOrder.DataBind() 

End Sub 

ことは、これを試してみてください。

+0

は、これまでのところ、私のページのロード中に、私は次のコードを持っています。 グリッドビューの行で、自動生成された削除ボタンをクリックします。セッションコレクションからそのアイテムを削除します。 gvOrder_RowDeletingサブメニューで、次のことがありますが、正しくないとわかりますそれ?? Session.RemoveAt(gvOrder.SelectedRow.RowIndex) – Tim

+0

上記の私の答えに加えて私の参照してください。また、Sessionに格納されている値をObjectからその型にキャスト(変換)することについての私のコメントにも注意してください。 – Tim

+0

注文の種類はオブジェクトのコレクションです。インデックスページで作成した注文です。これは作成方法です。 これは私が1オブジェクト addToCollection()GridViewRow = gvCDs.SelectedRow 点心objOrderとして注文=ニュー・オーダー objOrder.ID = gvRow.Cells(1).textのよう 薄暗いgvRow、より多くのを保持しているコレクションを作成する方法であります objOrder.Title = gvRow.Cells(2)の.text objOrder.Artist = gvRow.Cells(3)の.text objOrder.Price = gvRow.Cells(5)の.text colOrder.Add(objOrder) セッション(」 Order ")= colOrder – Tim

0

削除ボタンがクリックされるたびに、GridViewのRowCommandイベントが発生し、コマンド名で確認できます。e.CommandName == "Delete"

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "Delete") 
    { 
     Int32 Id = Convert.ToInt32(e.CommandArgument);// this will return the selected 
     //row Id, which help you to identify and helps you to delete particular row 
     // Put your deletion code here, that delete the record from list.....  
    } 
} 
+0

これまでのページロードで、 : gvOrder.DataSource =セッション(「注文」) gvOrder.DataBind() これは、私が正しくしたいものを表示します。 グリッドビューの行で、自動生成された削除ボタンをクリックします。セッションコレクションからそのアイテムを削除します。 gvOrder_RowDeletingサブメニューで、次のことがありますが、正しくないとわかりますそれ?? Session.RemoveAt(gvOrder.SelectedRow.RowIndex) – Tim

+0

@Tim;いいえ、あなたがしていることは正しくありません。 –

関連する問題