Bonsoir,
La solution la plus immédiate est d'utiliser l'historique client, et donc un simple retour par javascript : évidemment, cela dépend des restrictions éventuelles que le client impose à son historique (à la limite, dans ce cas, je dirais que c'est de sa faute, mais bon...). JSonline à raison, je pense, dans son explication. Dans ce cas, si tu ne veux pas passer par l'historique client, tu dois passer le pageindex de ton gridview à ta page de détail. La session est une possibilité, ou alors, tu peux aussi lire dans ta page de détail le pagindex du gridview de la page précédente, et le mettre par exemple dans un hiddenfield, qui sera à son tour lu lors du retour... Ce ne serait pas d'une élégance folle, mais ça marcherait. Si tu utilises des "buttonlink", pour qu'il y ait postback, et non pas navigation simple, tu pourras lire dans ta page 2 (détails) le pageindex à l'aide de page.previouspage... et le passer dans un hiddenfield. En mettant un autre buttonlink sur ta page 2, qui renvoie à la page de départ (celle de ta gridview), tu pourras lire cet hiddenfield à l'aide de la même méthode, par exemple, en vb (ici sur l'init de la gridview) :
Protected Sub GridView1_Init(ByVal sender As Object, ByVal e As System.EventArgs) If Not Page.PreviousPage Is Nothing Then Dim hf As HiddenField = CType(Page.PreviousPage.FindControl("HiddenField1"), HiddenField) If Not hf Is Nothing Then GridView1.PageIndex = hf.Value End If End If End Sub
Evidemment, il faut se méfier dans ce cas de la manière d'accéder à ta page (pour éviter l'ambiguïté éventuelle sur l'hiddenfield). Mais c'est une simple convention de nom à adopter. Ce n'est pas forcément plus compliqué qu'avec une session, puisqu'il faut prévoir lors des sessions le cas où l'utilisateur ne revient pas directement sur la page précédente... à moins évidemment que tu veuilles conserver de manière plus durable la pagination de ta gridview.
GGtry
|