Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    5

    Inherits SqlDataAdapter

    Ciao. Vorrei estendere la classe SqlDataAdapter con un nuovo metodo (FillPagedDataSet) che accetti come unici parametri un Dataset e il numero di pagina. Questo metodo poi esegue il caricamento nel dataset dei soli record appartenenti al numero di pagina specificato in modo da ottimizzare le prestazioni con dataset che invece sarebbero enormi (per esempio nel mio caso un dataset potrebbe contenere migliaia di righe, ma posso limitare a 20 da visualizzare per volta con questo sistema).
    Ho provato a creare una nuova classe e ereditare da SqlDataAdapter, ma mi dice che non SqlDataAdapter non e' ereditabile. Any workarounds?
    Grazie in anticipo.

  2. #2
    girovagando in rete alla ricerca di soluzioni per una Datagrid, in passato ho trovato questo codice:
    codice:
    Sub binddata()
        Dim DS As DataSet
        Dim MyConnection as OleDbConnection
        Dim MyCommand As OleDbDataAdapter
        Dim quanti as integer
        MyConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source="+server.mappath("database.mdb"))
    
        myConnection.Open()
        if MyDataGrid.VirtualItemCount =0 then
            Dim myCommand2 As New OleDbCommand("select count(*) from tabella2", myConnection)
            quanti = mycommand2.executeScalar()
            MyDataGrid.VirtualItemCount = quanti
        else
            quanti = MyDataGrid.VirtualItemCount
        end if
    
        MyCommand = New OleDbDataAdapter("select * from tabella2", MyConnection)
        DS = new DataSet()
        MyCommand.Fill(ds,(start_index*15),15, "tabella2")
        dim source as dataview=ds.Tables("tabella2").DefaultView
        MyDataGrid.DataSource=source
        MyDataGrid.DataBind()
        MyConnection.close()
        lblMessage.Text = "Pagina " & MyDataGrid.CurrentPageIndex+1 & _
            " di " & MyDataGrid.PageCount & _
            ". Record presenti=" & quanti
    End Sub
    Non ho avuto modo di testarlo in quanto, pur avendo lo stesso tuo problema relativo al caricamento di un mastodontico risultato di una query, mi sono arrangiato per ora con il classico caricamento dei dati cioè l'estrazione dal primo all'n-esimo record.
    Ci darò un'occhiata anche io quanto prima.
    Spero tuttavia di essere stato utile.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    5
    Grazie per l'intervento, ma il problema non e' riempire il Dataset..
    Vorrei estendere il DataAdapter cosi' che abbia gia' "in se'" questa funzione.

  4. #4
    Originariamente inviato da Danny Goodman
    Grazie per l'intervento, ma il problema non e' riempire il Dataset..
    Vorrei estendere il DataAdapter cosi' che abbia gia' "in se'" questa funzione.
    Ah praticamente nel "Mycommand" dovresti poter integrare questa funzionalità e quindi usarla appunto come una estensione di classe.
    Perdonami se quindi ho male-inteso la tua richiesta. Non so come aiutarti a riguardo.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    5
    Originariamente inviato da motogpdesmo16
    Ah praticamente nel "Mycommand" dovresti poter integrare questa funzionalità e quindi usarla appunto come una estensione di classe.
    Perdonami se quindi ho male-inteso la tua richiesta. Non so come aiutarti a riguardo.
    Figurati, grazie comunque

  6. #6
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Ma guarda che il metodo che ti ha postato motogpdesmo16 fa quello che chiedi tu.
    Non c'è bisogno di creare una nuova classe o di fare l'override di quella esistente, basta che ti crei una function che passandole i vari parametri ti ritorna il dataset popolato con i dati contenuti nella pagina scelta.
    Per foza di cose devi però passare anche il numero totale di risultati trovati, questo sia se segui il consiglio, sia che vuoi intraprendere la strada che hai pensato,
    Ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2006
    Messaggi
    5
    Originariamente inviato da Legnetto
    Ma guarda che il metodo che ti ha postato motogpdesmo16 fa quello che chiedi tu.
    Non c'è bisogno di creare una nuova classe o di fare l'override di quella esistente, basta che ti crei una function che passandole i vari parametri ti ritorna il dataset popolato con i dati contenuti nella pagina scelta.
    Per foza di cose devi però passare anche il numero totale di risultati trovati, questo sia se segui il consiglio, sia che vuoi intraprendere la strada che hai pensato,
    Ciao
    Perfettamente chiaro ma, come dire, vorrei fare la stessa cosa estendendo il DataAdapter(sto creando una mia libreria, con un page template avente un DataLayer integrato e Custom Controls particolari, come un DataGrid avanzato).

    Al momento uso gia' una normale funzione, ma vorrei qualcosa del tipo DataAdapter.FillPagedDataset(myDataset, pageNumber, pageSize)

    Cmq forse ho risolto, faccio delle prove e posto se funziona, nel caso interessi a qualcuno.

  8. #8
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Ok, non avevo compreso bene quello che chiedevi, anni fa mi ero riscritto i controlli net per adattarli alle mie esigenze, nel caso del datagrid, avevo implementato la paginazione, l'ordinamento bidirezionale, tolto la viewstate ecc, tutto in modo automatico. A quel controllo, gli passo la query, il numero di pagina visualizzata e fa tutto lui.
    L'unico problema è che è diventata una classe di quasi 1500 righe di codice, ci sono delle funzioni che ho implementato nel corso del tempo che ormai non mi ricordo neanche più che ci sono
    Adesso però con net 2.0 l'ho abbandonato per utilizzare i nuovi controlli nativi adattandoli.
    Se hai risolto, può essere interessante vedere il metodo, c'è da valutare però le prestazioni se ne risentono.
    Ciao
    Legnetto

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 © 2026 vBulletin Solutions, Inc. All rights reserved.