Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109

    [VB.NET] Filtrare una DataGridView in tempo reale

    Ciao a tutti,
    nel mio form ho un controllo split_container che divide in due l'area.
    In alto ho una serie di textbox che rappresentano vari campi del mio database mentre in basso ho una datagridview con tutti i record della mia tabella.

    Mi servirebbe aggiornale la lista di record nella DGV in tempo reale man mano che scrivo nelle textbox sopracitate tutto questo tenendo presente che:

    • la DGV la popolo manualmente lanciando un comando "SELECT" in un datareader sul quale poi ciclando inserisco le varie righe tramite mioDGV.rows.add() (spero sia chiaro se no vi posto il codice)
    • la DGV ha una mole di dati importanti (tipo 8000 records) che potrebbe anche aumentare in futuro (motivo per il quale non lancio la sopracitata SELECT ogni volta che eseguo il keypress).


    Avete qualche suggerimento su come fare? Se c'è da cambiare il modo di popolamento della DGV ditemelo pure....

    Il mio primo pensiero era di popolarla caricando tutti i dati del DB in un bel dataset tipizzato in modo da avere un componente interno al progetto da poter manipolare con più velocità (credo) però come ho già scritto in questo topic

    http://forum.html.it/forum/showthrea...readid=2964905

    non so perchè ma MySQL for Visual Studio non mi funziona più.... e sinceramente di creare tutto il Dataset a mano (è un DB immenso) non ne ho molta voglia

    Ogni idea (anche se differisce dalla struttura che ho descritto) è benaccetta! Tanto sono all'inizio dello sviluppo quindi tutto è modificabile
    Grazie a tutti!!!!

  2. #2
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263
    Probabilmente ne mastico meno di te, ma siccome provengo da Access (addiriittura 98) sono abituato ad usare questo DB, più (anche) le possibilità di utilizzo delle Query. Anch'io ho dovuto richiamare il contenuto variabile di alcune tabelle "pesanti" in tempo reale ed ho fatto più o meno così:

    codice:
        Private Sub caricaElenco()
    
            Dim rcrdst_1 As New ADODB.Recordset, rcrdst_2 As New ADODB.Recordset, sSQL As String
            Dim i As Integer
    
            sSQL = "SELECT IlTuoNuovoRecord From LaTuaTabellaDiOrigine"
            rcrdst_1.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
            sSQL = "SELECT IlTuoNuovoRecordDaAggiungere From LaTuaTabellaDaCaricare"
            rcrdst_2.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
            For i = 0 To rcrdst_1.RecordCount - 1
                rcrdst_2.AddNew()
                rcrdst_2("IlTuoNuovoRecordDaAggiungere").Value = rcrdst_1("IlTuoNuovoRecord").Value
                rcrdst_2.Update()
                rcrdst_1.MoveNext()
            Next i
    
        End Sub

    E poi, siccome non sono molto bravo con l'SQL, ho usato la funzione Query di Access: L'IDE delle Query mi permette di comporle come voglio, poi copio brutalmente il codice SQL e lo incollo in VB .NET

    Per aggiornare la ListBox, semplicemente richiamo la Sub caricaElenco.

  3. #3
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263
    Probabilmente ne mastico meno di te, ma siccome provengo da Access (addiriittura 98) sono abituato ad usare questo DB, più (anche) le possibilità di utilizzo delle Query. Anch'io ho dovuto richiamare il contenuto variabile di alcune tabelle "pesanti" in tempo reale ed ho fatto più o meno così:

    codice:
            Private Sub caricaElenco()
    
            Dim rcrdst_1 As New ADODB.Recordset, rcrdst_2 As New ADODB.Recordset, sSQL As String
            Dim i As Integer
    
            sSQL = "SELECT IlTuoNuovoRecord From LaTuaTabellaDiOrigine"
            rcrdst_1.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
            sSQL = "SELECT IlTuoNuovoRecordDaAggiungere From LaTuaTabellaDaCaricare"
            rcrdst_2.Open(sSQL, CnDBLocale, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
    
            For i = 0 To rcrdst_1.RecordCount - 1
                rcrdst_2.AddNew()
                rcrdst_2("IlTuoNuovoRecordDaAggiungere").Value = rcrdst_1("IlTuoNuovoRecord").Value
                rcrdst_2.Update()
                rcrdst_1.MoveNext()
            Next i
    
        End Sub

    E poi, siccome non sono molto bravo con l'SQL, ho usato la funzione Query di Access: L'IDE delle Query mi permette di comporle come voglio, poi copio brutalmente il codice SQL e lo incollo in VB .NET

    Per aggiornare la ListBox, semplicemente richiamo la Sub caricaElenco.

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,109
    Grazie! Alla fine però ho risolto il problema che non mi creava il dataset tipizzato e con un semplice bindingSource.filter inserito nell'evento textChange delle textbox ho ottenuto esattamente quello che cercavo!

    Grazie ancora e buona pasqua!

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