Visualizzazione dei risultati da 1 a 8 su 8

Discussione: generic .net

  1. #1

    generic .net

    Salve ragazzi, mi serve un aiutino sui generici.
    Devo paginare un repeater con il pagedDataSource e voglio leggere i dati da un
    dataReader e associarli ad un tipo generico (MioTipo) per evitare di usare il dataTable come dataSource del pagedDataSource.

    Ho fatto la classe per definire il MioTipo
    Qui lo richiamo nel codice.
    codice:
           Dim myList As New List(Of MioTipo)
    
            do while objRS.read
                For Each listElements As MioTipo In myList
                    listElements.myTitolo = objRS("titolo").toString()
                    listElements.myDescrizione = objRS("descrizione").toString()
                    myList.Add(listElements)
    
                    Label1.Text = listElements.myTitolo & "-" & listElements.myDescrizione
                Next
            loop
    
            'Inserisco l'arraylist nel pageddatasource
            Dim paginazione As New PagedDataSource
            paginazione.DataSource = myList
    Ma il controllo repeater asspciato nella pagina .aspx è vuoto.
    Anche se mi faccio scrivere in una label il valore di myList, è sempre vuoto.
    lucasweb.it
    web design & development >>>

  2. #2
    Generic e pager a parte, perchè fai un foreach su una collection che sembra essere vuota?
    Forse sarebbe meglio che all'interno del ciclo do while istanziassi un oggetto del tuotipo e dopo averlo valorizzato lo aggiungessi alla collection
    codice:
    Dim myList As New List(Of MioTipo)
    
            do while objRS.read
                dim tuoTipo as new MioTipo
                    tuoTipo.myTitolo = objRS("titolo").toString()
                    tuoTipo.myDescrizione = objRS("descrizione").toString()
                    myList.Add(tuoTipo)
                    Label1.Text = tuoTipo.myTitolo & "-" & tuoTipo.myDescrizione            
            loop
    
            'Inserisco l'arraylist nel pageddatasource
            Dim paginazione As New PagedDataSource
            paginazione.DataSource = myList
    Saluti a tutti
    Riccardo

  3. #3
    Grazie Riccardo,

    Ho fatto.
    codice:
    Dim myList As New List(Of MioTipo)
    
            Do While objRS.Read
                Dim listElement As New MioTipo()
    
                listElement.myTitolo = objRS("titolo").ToString()
                listElement.myDescrizione = objRS("descrizione").ToString()
                myList.Add(listElement)
    
                Label1.Text = listElement.myTitolo & "-" & listElement.myDescrizione
            Loop
    Ma mio restituisce errore qui
    listElement.myTitolo = objRS("titolo").ToString()
    qualcosa a che fare con la lunghezza che risulta inferiore al numero di elementi....
    non ho capito bene.

    A parte tutto comunque lo consideri un modo valido per gestire un repeater paginato ?
    Ho utilizzato nel frattempo anche un dataAdapter per alimentare un dataTable e funziona.
    Come la vedi ?
    lucasweb.it
    web design & development >>>

  4. #4
    Questo è l'errore : Troubleshooting Exceptions: System.IndexOutOfRangeException
    lucasweb.it
    web design & development >>>

  5. #5
    Originariamente inviato da Lucasweb
    Ma mio restituisce errore qui
    listElement.myTitolo = objRS("titolo").ToString()
    qualcosa a che fare con la lunghezza che risulta inferiore al numero di elementi....
    non ho capito bene.
    con queste informazioni non è possibile aiutarti. Quindi impara ad effettuare il debug, mettendo un breackpoint e verificando che la query che riempie l'oggetto che hai chiamato objRS contiene le colonne. Se objRS è un datareader, studia meglio la teoria e impara ad aprire leggere e chiudere un datareader correttamente.
    Originariamente inviato da Lucasweb
    A parte tutto comunque lo consideri un modo valido per gestire un repeater paginato ?
    se usi VS2008 ti consiglio di utilizzare il controllo ListView che è molto simile al repeatere in più ti offre la possibilità di associarlo al controllo DataPager che lo pagina senza fatica.
    Originariamente inviato da Lucasweb
    Ho utilizzato nel frattempo anche un dataAdapter per alimentare un dataTable e funziona.
    Come la vedi ?
    Non so che dirti. Di modi per collegarsi ad un db e prendere i dati ce ne sono tanti. Quindi, in bocca al lupo.
    Saluti a tutti
    Riccardo

  6. #6
    con queste informazioni non è possibile aiutarti. Quindi impara ad effettuare il debug, mettendo un breackpoint e verificando che la query che riempie l'oggetto che hai chiamato objRS contiene le colonne. Se objRS è un datareader, studia meglio la teoria e impara ad aprire leggere e chiudere un datareader correttamente.
    Lo so.
    Il debug lo so già fare.
    objRS è un dataReader e non c'è bisogno che "studi meglio la teoria" almeno per imparare ad aprire e chidere un dataReader, il problema non è li.
    Inoltre so come chiudere ed aprire un datareader correttamente.
    Sicuramente studierò altra teoria, programmo da quasi dieci anni e non mi sono mai fermato... figurati se posso permettermelo adesso.

    se usi VS2008 ti consiglio di utilizzare il controllo ListView che è molto simile al repeatere in più ti offre la possibilità di associarlo al controllo DataPager che lo pagina senza fatica.
    Conosco il controllo ma devo sviluppare su .net 2.0 e non 3.5
    Comunque con il dataTable lo stesso posso paginare senza fatica associando
    la paginazione ad un repeater o a un datalist.
    Certo devo scrivere un po di codice, ma non è un problema.

    Non so che dirti. Di modi per collegarsi ad un db e prendere i dati ce ne sono tanti. Quindi, in bocca al lupo.
    Lo so.
    Quà nel caso specifico chiedevo, se avevi esperienza, un suggerimento sulle prestazioni.
    Ma comunque ho avuto conferma che sono sicuramente migliori con un cursore forward-only.
    Volevo evitare di alimentare un DT, ma credo sia meglio perchè il controllo paged riceve
    senza problemi come datasource il DT.

    Grazie comunque dell'aiuto.
    Ciao
    lucasweb.it
    web design & development >>>

  7. #7
    Se il debug lo sai fare e sai "leggere" correttamente un datareader allora l'errore che avevi appena postato dovresti riuscire a risolvero facilmente.
    Per il resto, il dataadapter al suo interno usa un datareader per riempire la datatable.
    Volendo, puoi passare un datareader direttamente alla datatable usando la funzione tuadatatable.Load(tuodatareader) piuttosto che scomodare un dataadapter.
    Saluti a tutti
    Riccardo

  8. #8
    Volendo, puoi passare un datareader direttamente alla datatable usando la funzione tuadatatable.Load(tuodatareader) piuttosto che scomodare un dataadapter
    Grazie mille, vedi che quando vuoi qualche consiglio buono lo sai dare.....
    lucasweb.it
    web design & development >>>

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.