Avatar billede aero Nybegynder
29. november 2010 - 22:54 Der er 9 kommentarer og
1 løsning

paging i repeater men MAX 5 side tal af gangen.

Hej

Har fundet denne stump kode som virker ang. noget paging i en Repeater men skal lige have hjælp til en lille ting.

Code
        Dim NavigationText As String = ""
        If CurrentPage > 1 Then
            NavigationText += "<a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Page=" & CurrentPage - 1 & "><<</a> "
        End If
        For i = 1 To intTotalPages
            If CurrentPage = i Then
                NavigationText += "<b>" & i & "</b>    "
            Else
                NavigationText += "<a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Page=" & i & ">" & i & "</a> "
            End If
        Next i
        If CurrentPage < intTotalPages Then
            NavigationText += "<a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Page=" & CurrentPage + 1 & ">>></a> "
        End If

Det den gør er at den laver
<< 1 2 3 4 >>
Altså hvis jeg får vist 40 recorder delt op med 10 på hver side så laver den 4 sider... fint nok.

Men hvis jeg nu har 500 recorder hvor der vises 10 på hver side så giver det 50 sider.

Det er ret mange kan jeg gøre noget i
        For i = 1 To intTotalPages
            If CurrentPage = i Then
                NavigationText += "<b>" & i & "</b>    "
            Else
                NavigationText += "<a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Page=" & i & ">" & i & "</a> "
            End If
        Next i
så den evt. MAX viser 5 tal. så den vil vise dette
<< 1 2 3 4 5 >> og hvis jeg så trykker på >> så viser den
<< 2 3 4 5 6 >> osv... op til << 46 47 48 49 50 >>.
Avatar billede arne_v Ekspert
30. november 2010 - 04:00 #1
Måske:

For i = 1 To intTotalPages

kan erstattes med:

For i = Math.Max(1,CurentPage-5) To Math.Min(intTotalPages,CurrentPage+5)

?
Avatar billede aero Nybegynder
30. november 2010 - 18:46 #2
okay hvad nu hvis jeg vil have dette ind i en dropdown istedetfor

      For i = 1 To intTotalPages
            If CurrentPage = i Then
                NavigationText += "<b>" & i & "</b>    "
            Else
                NavigationText += "<a href=" & Request.ServerVariables("SCRIPT_NAME") & "?Page=" & i & ">" & i & "</a> "
            End If
        Next i


Så den sider Side 1 af 50 i en dropdown og så kan jeg så vælge evt. 5 af 50 og så viser den, den side !?

og smid et svar.
Avatar billede arne_v Ekspert
01. december 2010 - 03:08 #3
For i = 1 to TotalPages Step 5
    Dim startpage As Integer = i
    Dim endpage = startpage + 4
    ...

måske
Avatar billede arne_v Ekspert
01. december 2010 - 03:08 #4
og et svar
Avatar billede aero Nybegynder
01. december 2010 - 08:22 #5
Hej Arne

det var ikke lige det jeg tænkte, bare en dropdown med flg. (hvis der kun var 5 sider.
1 af 5
2 af 5
3 af 5
4 af 5
5 af 5
Avatar billede arne_v Ekspert
05. december 2010 - 19:58 #6
så skal du i NavigationText akkumlere en combobox fremfor en række links !?
Avatar billede aero Nybegynder
06. december 2010 - 22:57 #7
og hvordan gør jeg det.
Avatar billede arne_v Ekspert
07. december 2010 - 02:40 #8
Noget a la:

      NavigationText = "<select name='foobar'>"
      For i = 1 To intTotalPages
          NavigationText += "<option>" & i & "</option>"
      Next i
      NavigationText += "</select>"

vil vise options.

Så skal du have sat noget JavaScript på således at du går til den rigtige side, når noget vælges.
Avatar billede aero Nybegynder
07. december 2010 - 21:32 #9
okay og det gøres ved at.....!?
Avatar billede arne_v Ekspert
08. december 2010 - 02:45 #10
onchange='this.form.submit()' på select tag ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester