Visualizzazione dei risultati da 1 a 10 su 12

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500

    vb.net- aggiornare datagridview

    Dopo avere inserito un nuovo record in datagridview sia a livello di datagridview e anche nel Db volevo aggiornare il datagridview ma non aggiorna anche con datagridview.refresh
    Soluzione?ho cercato ma non ho trovato niente,certo,sarebbe facile ricare il tutto ma solo per una riga da aggiornare mi sembra eccessivo.
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Che componenti hai utilizzato? Come li hai collegati? Quali sono le query specificate per l'aggiornamento?

    Aggiungi i dettagli mancanti perché da quelli forniti non è immediato risalire allo stato del progetto che hai creato e quindi magari darti un aiuto sensato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Quote Originariamente inviata da alka Visualizza il messaggio
    Che componenti hai utilizzato? Come li hai collegati? Quali sono le query specificate per l'aggiornamento?

    Aggiungi i dettagli mancanti perché da quelli forniti non è immediato risalire allo stato del progetto che hai creato e quindi magari darti un aiuto sensato.
    prima aggiungo una riga al datagridview,mi posiziono sulla prima cella della riga aggiunta,riempio le celle poi eseguo il codice:
    codice:
     myrow = mytable.NewRow
            myrow.Item(1) = dvsestine.Item(0, nmrec).Value
            myrow.Item(2) = dvsestine.Item(1, nmrec).Value
            myrow.Item(3) = dvsestine.Item(2, nmrec).Value
            myrow.Item(4) = dvsestine.Item(3, nmrec).Value
            myrow.Item(5) = dvsestine.Item(4, nmrec).Value
            myrow.Item(6) = dvsestine.Item(5, nmrec).Value
            myrow.Item(7) = dvsestine.Item(6, nmrec).Value
            myrow.Item(9) = dvsestine.Item(8, nmrec).Value
            mytable.Rows.Add(myrow)
            cmdbuilder = New OleDbCommandBuilder(apsestina)
            apsestina.MissingSchemaAction = MissingSchemaAction.AddWithKey
            apsestina.Update(mysestina, "sestina")
            MessageBox.Show("Aggiornamento Effettuato con Successo.", "Aggiornamento", MessageBoxButtons.OK, MessageBoxIcon.Information)
            btnAggiungi.Enabled = True
    ho omesso il codice del datagridview.refresh che non funziona.
    Tutto funzionante.
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Quote Originariamente inviata da vnt54 Visualizza il messaggio
    prima aggiungo una riga al datagridview,mi posiziono sulla prima cella della riga aggiunta,riempio le celle poi eseguo il codice [...]
    Se aggiungi una riga, perché hai bisogno di "posizionarti" e di "riempire" delle celle?

    Quando i controlli visuali - come la griglia - sono associati ai dati, inserire nella griglia equivale ad aggiungere nella tabella, e viceversa, per effetto del binding stesso. Non devi fare le cose due volte.

    Temo che ci sia qualche problema nel modo in cui hai connesso tra loro i componenti o implementato il "binding", dato che il tutto dovrebbe avere luogo senza scrivere quasi codice.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    500
    Quote Originariamente inviata da alka Visualizza il messaggio
    Se aggiungi una riga, perché hai bisogno di "posizionarti" e di "riempire" delle celle?

    Quando i controlli visuali - come la griglia - sono associati ai dati, inserire nella griglia equivale ad aggiungere nella tabella, e viceversa, per effetto del binding stesso. Non devi fare le cose due volte.

    Temo che ci sia qualche problema nel modo in cui hai connesso tra loro i componenti o implementato il "binding", dato che il tutto dovrebbe avere luogo senza scrivere quasi codice.
    Temo che forse non hai guardato bene,Datagridview non è associato a nessun dato,mi serve solo per visualizzare i dati,poi,nell'occasione, e per mia mera comodità, aggiungo una riga e riempio tutte le cella che poi saranno inseriti nel datarow come da codice precedente e successivamente aggiornano la table.
    Riepilogo:
    Caricamento nel load
    codice:
     ApriDataBase()
            sestina()
            mytable = mysestina.Tables(0)
            nmrec = mysestina.Tables(0).Rows.Count
            dvsestine.RowCount = nmrec ' aggiungo le righe in base a quanti record ho nella table
            For i = 0 To nmrec - 1
                myrow = mytable.Rows(i)
                dvsestine.Item(0, i).Value = myrow.Item(1)
                Dim datevalue As DateTime = myrow.Item(1)
                datevalue.ToString("dddd", New CultureInfo("it-IT"))
                dvsestine.Item(7, i).Value = datevalue.ToString("dddd", New CultureInfo("it-IT"))
                Dim currentnum As String = String.Format("{0:C}", myrow.Item(9))
                dvsestine.Item(8, i).Value = currentnum
                For r = 1 To 6
                    dvsestine.Item(r, i).Value = myrow.Item(r + 1)
                Next
            Next
    Poi aggiungo la riga come spiegato prima.

    Spero di essere avere spiegato bene.
    Grazie comunque.
    Ultima modifica di vnt54; 20-02-2023 a 15:18
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Quote Originariamente inviata da vnt54 Visualizza il messaggio
    Temo che forse non hai guardato bene,Datagridview non è associato a nessun dato [...]
    Non è che "non ho guardato bene", semplicemente quel pezzo di codice (o precisazione) non c'è.
    Quello che io non avevo realmente compreso è il motivo per cui mancava: tu non l'hai omesso, ma proprio non l'hai implementato.

    A questo punto però, non essendoci alcun legame tra "view" e dati, non so quali meccanismi ti aspetti che accadano in modo automatico.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    nel codice che inizia con myrow = mytable.NewRow... ​sembra che tu stia aggiungendo una riga al db, non alla grid. Visto che non c'è binding tra db e grid, dovresti caricare la riga anche nella grid, non basta un refresh

  8. #8
    @vnt54, ci sono solo due scenari: o hai associato da datagridview a una sorgente dati, oppure no (vedi https://www.google.com/search?q=datagridview+bind)

    - se l'hai associata, quello che fai sul db si riflette sulla griglia, quello che fai sulla griglia si riflette sul db

    - se NON l'hai associata (e dal codice postato pare di no, altrimenti perché carichi le righe a mano?) quello che fai sul db NON si riflette sulla griglia, quello che fai sulla griglia NON si riflette sul db --> quello che fai sul db lo devi riportare a mano ANCHE sulla griglia, quello che fai sulla griglia lo devi riportare a mano ANCHE sul db

    entrambe le modalità sono lecite, non ce ne è una migliore dell'altra, ma come al solito dipende da quello che devi fare


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.