218 messaggi dal 01 maggio 2003
www.lucasweb.it
Salve, un consiglio per la paginazione dei controlli indicati.

Ho trovato questo codice che utilizza la classe PagedDataSource

'Creo Oggetto PagedDataSource
Pager = New PagedDataSource

'Passo a Pager i dati presi da un DataSet
Pager.DataSource = ds.Tables(0).DefaultView

'Abilito la paginazione e imposto i parametri
Pager.AllowPaging = True
Pager.PageSize = 5
Pager.CurrentPageIndex = 1

'Assegno al Repeater la proprietà DataSource
Repeater1.DataSource = Pager
Repeater1.DataBind()


Ho provato, ma non va.
Inoltre poi mi chiedo, devo comunque implementare qualcosa per i link delle pagine.
Suggerimenti.....

http://www.lucasweb.it
web design & development
hai già letto lo #445?

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
218 messaggi dal 01 maggio 2003
www.lucasweb.it
In verità ho visto sia quello che quest'altro
http://www.aspitalia.com/script/651/Paginazione-Risultati-Classe-PagedDataSource.aspx

E quest'ultimo lo trovo più rapido, chiaro e semplice nell'implementazione ma anche nella manutenzione.
Inoltre utilizza una classe già esistente in .net.

Ma non va.
Sto cercando di capire cosa sbaglio.....

http://www.lucasweb.it
web design & development
218 messaggi dal 01 maggio 2003
www.lucasweb.it
Unica variazione a questo script, quando imposto il:

'Inserisco l'arraylist nel pageddatasource
Dim paginazione As New PagedDataSource
paginazione.DataSource = lista


Invece di impostare lista che è un array creato ad hoc, imposto
objRS che è un dataReader
Dim objRS As OleDbDataReader
objRS = myCmd.ExecuteReader()


E l'errore credo sia proprio qui, perchè se lascio l'array funziona.

http://www.lucasweb.it
web design & development
sono d'accordo quando dici che il codice dello script che stai utilizzando è più semplice, ma per quanto riguarda la manutenzione il secondo è senza dubbio migliore.

in quanto è più semplice poi riutilizzarlo e mantenerlo

comunque posto il codice per intero che lo controlliamo

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
218 messaggi dal 01 maggio 2003
www.lucasweb.it
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Dim conn As New OleDbConnection(ConfigurationManager.ConnectionStrings("myConnectionString2").ConnectionString)
        Dim myCmd As New OleDbCommand()

        Dim sql As String = "SELECT * FROM tabella1"
        myCmd.Connection = conn
        myCmd.CommandText = sql

        Try
            conn.Open()
            Dim objRS As OleDbDataReader
            objRS = myCmd.ExecuteReader()

            ' Prendo il numero di pagina dalla collection QueryString
            Dim numero As Integer = 1
            If Not Request.QueryString("pagina") Is Nothing Then
                numero = Convert.ToInt32(Request.QueryString("pagina"))
            End If

            ' creo una lista per il repeater
            'Dim lista As New ArrayList
            'For i As Integer = 1 To objRS.c
            'lista.Add("articolo " + i.ToString())
            'Next

            'Inserisco l'arraylist nel pageddatasource
            Dim paginazione As New PagedDataSource

            paginazione.DataSource = objRS
            paginazione.AllowPaging = True
            paginazione.PageSize = 4
            paginazione.CurrentPageIndex = numero - 1

            ' Modifico i link per cambiare pagina
            pagina.InnerText = numero.ToString()
            If Not paginazione.IsFirstPage Then
                prima.HRef = "Default2.aspx?pagina=" + (numero - 1).ToString()
            End If
            If Not paginazione.IsLastPage Then
                dopo.HRef = "Default2.aspx?pagina=" + (numero + 1).ToString()
            End If

            ' Visualizzo i dati
            elenco.DataSource = paginazione
            elenco.DataBind()

            'RptCategorie.DataSource = objRS
            'RptCategorie.DataBind()

            objRS.Close()
            conn.Close()
        Catch ex As Exception
            Response.Write("ERRORE CONNESSIONE DB")
        End Try

    End Sub


Ti ringrazio anticipatamente.
Comunque sto provando ancora, magari alimento un array con il dataReader bho, provo.
Ma tu di sicuro hai già capito l'errore.

http://www.lucasweb.it
web design & development
218 messaggi dal 01 maggio 2003
www.lucasweb.it
Se togli il try catch ti da...
Impossibile calcolare il valore di Count per un'origine dati che non implementa ICollection.

Sulla riga 47 () "If Not paginazione.IsLastPage Then"

Forse non posso utilizzare il dataReader come fonte della classe PagedDataSource ?
Posso utilizzare il dataReader per alimentare qualche altra fonte ?
Array, lista o DataTable ? Quale consigli ?

Grazie ancora.

http://www.lucasweb.it
web design & development
esatto, utilizza il tuo reader per riempire una Array o un ArrayList, anche quà non è il massimo ma dovrenne funziona

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.