Postbackurl et paging [Résolu]

Signaler
Messages postés
37
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
18 octobre 2009
-
casa51
Messages postés
37
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
18 octobre 2009
-
Bonjour,
voila j'avance tous doucement dans mon moteur de recherche pour mon asso






-
         



Mon moteur de recherche (2 

dropdonwlists sont dans un contrôle utilisateur et présent dans tout le site)









-
         



Les valeur des dropdownlists  passe par postbakurl 

vers la page recherche.aspx (grâce à vous)









-
         


Ma page recherche.aspx récupère bien les valeurs et construit une requête sql via les valeurs







-
         


Un dataset est alimenter







-
         


Un paging créer manuellement (il marche nikel quand la requête est statique)




Mon problême est que quand j’utilise le paging avec les donnée transferer par postback url  je perd les variables transmise des que je change de page (résultat) .

quand c'est une variable statique via querystring  j'arrive a l'implementer dans le paging mais la

Je ne sais pas trop comment procéder pour garder ma requête sql 



Voila le code behind de la page recherche.aspx




------------------------code ------------------------
ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>




 







       
If
Not Page.PreviousPage IsNothingThen






 







           
Dim strsqltype AsString = ""






           
Dim strsqladh AsString = ""






 







           

Dim
uc As UserControl = CType(Page.PreviousPage.FindControl("menugauche1"), UserControl)






           
Dim strtype As DropDownList = CType(uc.FindControl("type_asso"), DropDownList)






           
Dim stradh As DropDownList = CType(uc.FindControl("adh"), DropDownList)






           

'----------------------recherche type






           

If
strtype.Text <> ""Then






                strsqltype "AND asso _SOUSTYPE '" & strtype.Text & "'"






      
     
End
If







           
'----------------------recherche adhérents







           
If stradh.Text <> ""Then






               
Select
Case stradh.Text






                   
Case
"1"







                        strsqladh
= " AND
asso
_adh  <= 10"






                   
Case
"2"







                        strsqladh = " AND (asso_adh  > 10) AND (asso_adh  <= 200)"






                   

Case

"3"







                        strsqladh = " AND (asso_adh  > 200)        





End

Select







           
End
If







 







           
Dim strsqlgeneral AsString = strsqltype & strsqladh




 







           
Dim connection As SqlConnection = CreateConnection()






           
Dim command2 AsNew SqlDataAdapter("select * from asso2 WHERE ID_db = '12203'" & strsqlgeneral & "", connection)






           







Dim
ds As DataSet = New DataSet()






            command2.Fill(ds, "jointure")






 







 







           
Dim builderLinkPages As System.Text.StringBuilder = New System.Text.StringBuilder(1024)






 







 







           
'----------------------------------------------------------------------------------







 







           
Dim strRequest AsInteger






           
Dim objPds AsNew PagedDataSource()






           

objPds.DataSource = ds.Tables(0).DefaultView






           
'Autoriser l'utilisation de la pagination







            objPds.AllowPaging = True






           
'Définition du nombre de données de la base de donnée à afficher par page







           
'Ici, retournera 5 éléments par pages







            objPds.PageSize = 8






           
'Variable Page actuelle (contiendra le numéro de la page en cours)







           
Dim CurPage AsInteger






           
'On vérifie si la variable "Page" du QueryString est bien remplie et si c'est bien un chiffre







           

Try






               
If
Not Request.QueryString("Page") IsNothingAnd Request.QueryString("Page") <= objPds.PageCount Then






                   

strRequest = Convert.ToInt32(Request.QueryString("Page").ToString())






                    CurPage = strRequest






               
Else







                   
'Si la variable QueryString Page est vide ou est plus grande que le nombre total de page







                   
'On renvoi la page 1 par défaut







                   

CurPage = 1






                    strRequest = 1






               
End
If







           
Catch ex As Exception






               

'En cas d'erreur, si la variable QueryString Page n'est pas un chiffre valide






        
       
'On renvoi la page 1 par défaut







                CurPage = 1






                strRequest = 1






           
End
Try







           
'Boucle qui retourne les liens vers toutes les pages de la pagination (Page 1, Page 2, Page 3, ...)







           

For
i AsInteger = 1 To objPds.PageCount






               

If
strRequest = i Then






                   
'Si la page courrante est égale au chiffre retourné par la boucle, on définit la page et son numéro sans lien







                   

builderLinkPages.Append("" & i & " ")






               

Else






                   
'Si la page courrante est pas égale au chiffre retourné par la boucle, on définit la page et son numéro avec un lien







                   

builderLinkPages.Append("[ & Request.CurrentExecutionFilePath & "?Page=" & i & """ title=""Page " & i & """>" & i & "] ")






               

End

If







           
Next







           
'Ajout de toutes les pages et tous les liens dans le contrôle Literal "litNumbersPages"







           

litNumbersPages.Text = builderLinkPages.ToString






            objPds.CurrentPageIndex = CurPage - 1






           

'Affichage du numéro de la page en cours et du nombre de page total (Ex.: Page 2 sur 5)






           
'lblCurrentPage.Text = "Page: " & CurPage.ToString() & " sur " & objPds.PageCount()







           
If
Not objPds.IsFirstPage Then






               
'Si la page en cours n'est pas la première page







               
'On définit l'url du lien "Précédent" et du lien "Première page"







               

lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath & "?Page=" & Convert.ToString(CurPage - 1)






               
'lnkBegin.NavigateUrl = Request.CurrentExecutionFilePath & "?Page=1"







           

Else






               
'Si la page en cours est la première page (1)







               
'Ne pas afficher le lien "Précédent" et "Première page"







               

lnkPrev.Visible = False






               
'lnkBegin.Visible = False







           
End
If







           

If

Not objPds.IsLastPage Then






               
'Si la page en cours n'est pas la dernière page







               
'On définit l'url du lien "Suivant" et du lien "Dernière page"







               

lnkNext.NavigateUrl = Request.CurrentExecutionFilePath & "?Page=" & Convert.ToString(CurPage + 1)






               
'lnkEnd.NavigateUrl = Request.CurrentExecutionFilePath & "?Page=" & objPds.PageCount







           

Else






               
'Si la page en cours est la dernière page







               
'Ne pas afficher le lien "Suivant" et "Dernière page"







        
       

lnkNext.Visible = False






               
'lnkEnd.Visible = False







           
End
If







           

'Définir que le PagedDataSource "objPds" est la source de donnée du Repeater






            Repeater1.DataSource = objPds






           
'Insertion des données de la base de donnée dans le contrôle Repeater







           

Repeater1.DataBind()






           
'----------------------------------------------------------------------------------















 







 







   
        command2.Dispose()






            connection.Close()






       

End

If







 







 







   
End
Sub


-----------------------------------------------end code ----------------------------------

peux etre que je procede mal je suis ouvert a toutes sorte de critique je veux progresser.

Merci encore

2 réponses

Messages postés
37
Date d'inscription
jeudi 4 avril 2002
Statut
Membre
Dernière intervention
18 octobre 2009

merci ggtry du tuyau j'ai réussi a le faire fonctionner !!

nikel !!!
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonsoir,

Puisque tu utilises un querystring avec un navigateurl, pourquoi ne pas passer dans ce navigateurl les données de tes dropdownlist ?
Tu peux garder ton previouspage, ou alors changer l'accès de départ, pour tout passer en navigateurl. 
Pour garder le previouspage, tu peux faire comme cela :
Si le page.previouspage est valide (ce ne sera pas le cas lors du navigate, en principe), tu remplis tes deux variables de querystring avec les données récupérées du dropdownlist.
Si tu es en navigation, tu récupères les données du querystring pour remplir ces deux mêmes variables (et regénérer avec elles les données du navigateurl de pagination).

GGtry