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
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("<span class=txt-navigation-datalist-u>" & i & "</span> ")
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("<a href=""" & Request.CurrentExecutionFilePath & "?Page=" & i & """ title=""Page " & i & """><span class=txt-navigation-datalist>" & i & "</span></a> ")
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