0

次の GridView があります。

asp:GridView ID="GridView1" 
    runat="server" 
    AutoGenerateColumns="False" 
    DataKeyNames="ID" 
    gridlines="None"
    cellpadding="15"
    width="980px"   
    ItemStyle-backcolor="#ebecf0"
    AlternatingItemStyle-backcolor="#ebecf0" 
    AllowPaging="True" 
    PageSize="4" 
    onpageindexchanging="GridView1_PageIndexChanging" 
    datasourceid="SqlDataSource2"
    >

そして、この選択コマンド:

"SELECT * FROM [tbl_Project] INNER JOIN tbl_Cat      
ON tbl_Project.CatID = tbl_Cat.Cat_ID 
INNER JOIN tbl_Klant   
ON tbl_Project.KlantID = tbl_Klant.Klant_ID 
WHERE (([Titel] LIKE '%' + @Titel + '%') 
AND  ([CatID] = CASE WHEN @CatID = -1 THEN [CatID] ELSE @CatID END) 
AND ([Bedrijf] LIKE '%' + @Bedrijf + '%') 
AND ([Website] LIKE '%' + @Website + '%'))" 

これにより、ユーザーはデータベース内のレコードを検索できます。GridView1 には詳細ボタンがあります。

 <asp:LinkButton ID="klant" runat="server"
    Text='<%#Eval("Bedrijf") %>'
    PostBackUrl='<%# "klant_wijzigen.aspx?Klant_ID="+Eval("Klant_ID").ToString()%>'>
    </asp:LinkButton>

これにより、ユーザーはその特定の件名の詳細を含む新しいページに移動します (ID に基づく)

質問

しかし、ユーザーが「戻る」をクリックすると、検索結果がクリアされます。これらの検索されたレコードを保存して PageLoad に表示するにはどうすればよいですか。

Cookie とセッションで試してみましたが、うまくいきません。

編集

私のセッションの試み:

Session("Test") = GridView1
GridView1 = Nothing

' Retrieve GridView from Session
GridView1 = DirectCast(Session("Test"), GridView)
GridView1.DataBind()
4

4 に答える 4

1

最初に の代わりに のOnClientClickイベントを使用してみてください。LinkButtonPostBackUrl

クリックするとLinkButton、そのOnClientClickイベントでいくつかの手順が実行されます。

  1. に渡すパラメーターの値を格納しSelect QueryますSession

    Textbox'sなどのようにどこからでも来る可能性がありますLabel's。コントロールから来た場合は、次のようにセッションに保存します

    Session("Bedrijf") = Bedrijf.Text
    

    他のコントロールの値も保存するだけです。BedrijfTextBoxBedrijf.Textsession

    注: 選択クエリで使用された値のみを保存してください。

    すべての値をセッションに保存した後。次のページにリダイレクトするだけです。

  2. page2 では、やりたいことを何でもしてください。

  3. back buttonクリックすると、変数にも設定さpagenameれます。session今はオンになっpage2.aspxているので、名前を次のsessionように設定します

    Session("prevpagename") = "Page2"
    
  4. 戻るボタンを押すと、のように同じページにリダイレクトされpage 2 to page 1ますpage 1 Page_Loadgrid view

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
          // Here firstly check the session variables for `pagename`
          If Session("prevpagename") = "Page2" Then
          // then directly assign the values of the parameters that you have store in session in select query.
          // After retrieving the values from the database filter by the parameters you have passed bind your `Grid View` again like
          gridview.DataSource = reader2
          gridview.DataBind()
          // Here reader2 is having the all return data that comes from your select query.You may save them on `DataTable`,`DataSet` as well and directly assign it to `DataSource` event of `GridView`.
          Else
          // another code.
          End If
        End If
    End Sub
    

このタイプのシナリオに従う必要があります。

ご理解とご協力をお願いいたします。

于 2013-06-06T09:49:21.960 に答える
0

次のようにselectedindexの変更でセッションを保存することで修正しました:

Protected Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Session("Categorie") = DropDownList1.SelectedValue
End Sub

Protected Sub txtKlant_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Session("Klant") = txtKlant.Text
End Sub

Protected Sub txtWebsite_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Session("Website") = txtWebsite.Text
End Sub

Protected Sub txtTitel_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
    Session("Titel") = txtTitel.Text
End Sub

そして、page_load でそれを呼び戻します:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    Cookie()

    If Not Page.IsPostBack Then           
        DropDownList1.SelectedValue = Session("Categorie")
        txtKlant.Text = Session("Klant")
        txtWebsite.Text = Session("Website")
        txtTitel.Text = Session("Titel")
        GridView1.DataBind()
    End If

End Sub
于 2013-06-07T09:35:52.137 に答える
0

セッション ("テスト") = GridView1

これは悪いと思います。選択クエリをセッション b4 リダイレクトに保存する代わりに、詳細ページをいくつかのクエリ文字列値でリダイレクトするように構成して、セッションから選択クエリを使用する必要があることを確認します。

于 2013-06-06T09:13:46.787 に答える