Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Paginatore Listview

  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    Paginatore Listview

    Seguendo le indicazioni di questo sito http://aspnet.4guysfromrolla.com/articles/021308-1.aspx ho paginato un listview usando un datapager esterno, customizzando il Templatepagerfield.
    Il paginatore effettivamente appare come voglio sul page load ma non funzionano i link alle pagine del listview e addirittura il datapager scompare quando seleziono una pagina diversa dalla attiva.

    Questo è il datapager (uso una tabella perchè sto cercando di usare lo stesso stile usato per altri controlli di tipo gridview in giro per il mio sito):
    codice:
    <asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1" PageSize="3">
                    <Fields>
                        <asp:TemplatePagerField>
                            <PagerTemplate>
                                <div id="divv" runat="server" class="pagination-ys" >
                                    <table runat="server" id="tabpager">
                                        <tbody>
                                        <tr>
                                        </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </PagerTemplate>
                        </asp:TemplatePagerField>
                    </Fields>
                </asp:DataPager>
    E questo è il codice lato server con il quale inserisco le pagine e gestisco il click per il cambiopagina:

    codice:
    Protected Sub Listview1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListView1.DataBound
            Dim currentPage As Integer = (DataPager1.StartRowIndex / DataPager1.PageSize) + 1
            Dim totalPages As Integer = DataPager1.TotalRowCount / DataPager1.PageSize
    
            Dim lbl As Label, lnk As LinkButton
            Dim ph As HtmlGenericControl = DataPager1.Controls(0).FindControl("divv")
            Dim tb As HtmlTable = ph.FindControl("tabpager")
            For i As Integer = 1 To totalPages
                Dim td = New HtmlTableCell
                If i = currentPage Then
                    'creo una label dentro alla cella
                    lbl = New Label
                    lbl.Text = i
                    lbl.CssClass = "pagination-ys"
                    td.Controls.Add(lbl)
                Else
                    'creo un link dentro alla cella
                    lnk = New LinkButton
                    lnk.Attributes.Add("pag", i)
                    lnk.CssClass = "pagination-ys"
                    lnk.Text = i
                    'gli attacco il codice da eseguire sul click
                    AddHandler lnk.Click, AddressOf PageJump
                    td.Controls.Add(lnk)
                End If
                tb.Rows(0).Cells.Add(td)
            Next
        End Sub
    
        Protected Sub PageJump(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim lnk As LinkButton = CType(sender, LinkButton)
            Dim pageNo As Integer = Convert.ToInt32(lnk.Attributes.Item("pag"))
    
            Dim startRowIndex As Integer = (pageNo - 1) * DataPager1.PageSize
    
            DataPager1.SetPageProperties(startRowIndex, DataPager1.PageSize, True)
        End Sub
    Noto che il codice che viene generato sulla pagina html è un po' diverso da come dovrebbe venire, in particolare nella funzione JS chiamata dal link manca il secondo parametro con l'indicazione della pagina!:
    codice:
    'codice del paginatore di un gridview che funziona
    <div class="pagination-ys">
    <table>
    <tbody>
    <tr>
    <td>
    <span>1</span>
    </td>
    <td>
    <a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$GV_opeaperti','Page$2')">2</a>
    </td>
    </tr>
    </tbody>
    </table>
    </div>
    
    'codice generato per il mio paginatore che non funziona
    <div id="ContentPlaceHolder1_DataPager1_ctl00_divv" class="pagination-ys">
    <table id="ContentPlaceHolder1_DataPager1_ctl00_tabpager">
    <tbody>
    <tr>
    <td>
    <span>1</span>
    </td>
    <td>
    <a href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$DataPager1$ctl00$ctl04','')" pag="2">2</a>
    </td>
    </tr>
    </tbody>
    </table>
    </div>
    Cosa sbaglio o cosa devo eventualmente modificare/aggiungere?
    Ultima modifica di supermac; 12-05-2015 a 14:59
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Ho aggirato il problema rubando un paginatore da qui http://stackoverflow.com/questions/1...-show-in-ul-li però per cultura se qualcuno mi spiega dov'era il baco sopra avrà mia stima imperitura
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.