Diminuire carico a Datagridview

di il
11 risposte

Diminuire carico a Datagridview

Salve a tutti, nel mio programma uso un Datagridview per visualizzare i dati del database, leggo in giro in rete, che se si caricano troppi dati nel dgv questo può essere rallentato o dare problemi. Ho capito (ma non so come) che è possibile caricare solo quelli a video o sbaglio? cioè se il dgv può far vedere 50 righe ne carica solo 50 ma è fattibile? Oppure si popola solo l'elenco di ciò che trovo con il pulsante cerca... tipo... metto un nome... Marco, e mi mostra solo i record che hanno come nome "Marco"... sapreste dirmi cosa conviene fare e indirizzarmi?
Grazie

11 Risposte

  • Re: Diminuire carico a Datagridview

    Cosa devi visualizzare con la dgv? Non tutta la tabella spero
  • Re: Diminuire carico a Datagridview

    Beh in effetti adesso carica tutto ma il mio timore è proprio quello che si appesantisca anche perchè è inutile visualizzare 200 record tanto devi avere un "cerca" quindi pensavo di alleggerire il carico o caricando e mostrando solo i primo 50 record o mandare nel dgv solo quelli trovati con la funzione cerca...
  • Re: Diminuire carico a Datagridview

    Ovvio che è inutile... visualizza quello che trovi dalle ricerche
  • Re: Diminuire carico a Datagridview

    Attualmente che tipo di codice utilizzi ?
  • Re: Diminuire carico a Datagridview

    Attualmente non uso nulla in particolare, leggo, scrivo e modifico direttamente il database e visualizzo tutto nel DGV con
    Me.DBTableAdapter.Fill(Me.DBGMDataSet.DB)
    ed ovviamente non è la cosa migliore

    con il trova invece.... una volta individuato il valore lo evidenzio nel DGV con questo codice:
     If cbTrova.Text = "ID" Then
                Dim dr As OleDbDataReader
                myConnection.ConnectionString = connString
                myConnection.Open()
                Dim trova As String
                trova = "Select *from DB where ID=" & tbTrova.Text & ""
                Dim cmd As OleDbCommand = New OleDbCommand(trova, myConnection)
                cmd.ExecuteNonQuery()
                dr = cmd.ExecuteReader()
                If dr.Read = True Then
                    MsgBox("Trovato per ID")
                    For Each Riga As DataGridViewRow In DBDataGridView.Rows
                        If String.IsNullOrEmpty(Riga.Cells(0).Value) = False Then
                            Dim stringa As String = Riga.Cells(0).Value.ToString
                            If stringa.IndexOf(tbTrova.Text) = 0 Then
                                DBDataGridView(0, Riga.Index).Style.BackColor = Color.Yellow
                                DBDataGridView.CurrentCell = DBDataGridView.Item(0, Riga.Index)
                                tbTrova.Clear()
                                cbTrova.Text = ""
                            End If
                        End If
                    Next
    solo che qui per esempio devo capire perchè mi evidenzia in giallo tutto quello che c'è dal punto in cui trova il valore in poi.... però poco male, se riuscissi a visualizzare solo i valori del campo a questo punto avrei risolto, lavorando con un dgv sempre scarico... che penso sia la cosa migliore no?
  • Re: Diminuire carico a Datagridview

    patel ha scritto:


    Attualmente che tipo di codice utilizzi ?
    Intendevo quale codice usi per connetterti al db e visualizzare i dati, non credo tu faccia tutto con una sola riga, oppure hai usato il wizard ?
  • Re: Diminuire carico a Datagridview

    Mi connetto cosi'
    Imports System.Data
    Imports System.Data.OleDb
    Public Class Home
        Dim provider As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
        Dim dataFile As String = "D:\Documenti\Dropbox\Studio Visual Basic\Progetti\Modificabili\GestioneMagazzino\DBGM.mdb;Persist Security Info=True;Jet OLEDB:Database Password=XXXXXXXXXXXXXXX"
        Dim connString As String = provider & dataFile
        Dim myConnection As OleDbConnection = New OleDbConnection
    e poi ovviamente quanto sopra per il trova e gli altri comandi per leggere o scrivere etc... perchè?
  • Re: Diminuire carico a Datagridview

    Ovviamente mi collego così al database senza problemi, per visualizzare i dati uso la stringa segnata sopra..... lavoro sempre diretto nel database ma visualizzo con una sola riga perchè?
  • Re: Diminuire carico a Datagridview

    Tu mostri soltanto pezzi di codice senza il contesto generale, da quanto riesco a capire popoli la dgv con tutti i record e POI fai la ricerca, invece potresti popolarla solo con i dati che ti interessano modificando la select, come ti ha detto subito oregon, quindi non select *, ma
    select campi da visualizzare where ....
  • Re: Diminuire carico a Datagridview

    Ciao scusa... mostro solo pezzi perchè è quello che ho capito di dover mostrare... figurati... di progetti come il mio ce ne sono a milioni non è un segreto di stato ah ah ah... dimmi cosa devo mettere e lo metto. Io ho fatto quello che hai detto nel post. Popolo tutto e cerco nel dgv ma sarebbe ottimo quello che hai suggerito dopo... è che non so farlo quindi sto cercando di capire quale comando utilizzare (select ho capito) e come... adesso studio il select. qualsiasi cosa debba pubblicare lo farò...
  • Re: Diminuire carico a Datagridview

    Comunque... poi alla fine ho risolto, ho eliminato il collegamento al database nel DatagridView ed ovviamente all'avvio è vuoto, poi ho messo un tasto trova con che ceca su vari campi la parola che ho inserito nella textbox e quindi se il valore restituito è diverso da zero allora carica i dati trovati.
    Alla fine è stato piè semplice del previsto. ovviamente faccio i controlli dei campi vuoti e l'else se il valore è 0 ma allego solo quello per cui avevo chiesto aiuto...
       DBBindingSource.Filter = "(Convert(ID, 'System.String') LIKE '" & tbTrova.Text & "')" & _
                        "OR (BarCode LIKE '" & tbTrova.Text & "') OR (Articolo LIKE '" & tbTrova.Text & "')"
                If DBBindingSource.Count <> 0 Then
                    With DBDataGridView
                        .DataSource = DBBindingSource
                    End With
    e così mostro tutti i campi se dovesse servirmi.
     DBBindingSource.Filter = Nothing
            With DBDataGridView
                .ClearSelection()
                .ReadOnly = True
                .MultiSelect = False
                .DataSource = DBBindingSource
            End With
    grazie a tutti.

    Marco
Devi accedere o registrarti per scrivere nel forum
11 risposte