Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    497

    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,288
    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
    497
    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,288
    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
    497
    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
    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

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288
    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...

  8. #8
    Quote Originariamente inviata da alka Visualizza il messaggio
    A questo punto però, non essendoci alcun legame tra "view" e dati, non so quali meccanismi ti aspetti che accadano in modo automatico.
    A volte, l'imBosizione della mano funziona ma devi essere bravo davvero

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    non so quali meccanismi ti aspetti che accadano in modo automatico.


    Un "Refresh" non fa miracoli ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di vnt54
    Registrato dal
    Mar 2009
    Messaggi
    497
    Quote Originariamente inviata da oregon Visualizza il messaggio

    Un "Refresh" non fa miracoli ...
    va beh...ho fatto errore di non postare per intero il codice..
    provvedo:
    carico i dati e li visualizzo nel datagridview
    codice:
      ApriDataBase()
            sestina()
            mytable = mysestina.Tables(0)
            nmrec = mysestina.Tables(0).Rows.Count
            dvsestine.RowCount = nmrec
            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
            dvsestine.Item(0, 0).Selected = False
            nmrec = dvsestine.RowCount
            For i = 1 To 90
                indx = 0
                For r = 0 To nmrec - 1
                    For t = 1 To 6
                        If dvsestine.Item(t, r).Value = i Then
                            indx = myvettore(i)
                            indx += 1
                            myvettore(i) = indx
                        End If
                    Next
                Next
            Next
    Ho bisogno di inserire una riga nel datagridview perchè mi serve successivamente per incrementare il record nella tabella,potevo usare anche le texbox ma per mia comodità ho preferito così.
    Questo il codice in cui aggiungo la riga al datagridview
    codice:
     dvsestine.Rows.Add()
            dvsestine.CurrentCell = dvsestine.Item(0, nmrec)
            btnAggiungi.Enabled = False
            dvsestine.Focus()
    in questo modo aggiungo la riga al datagridview e mi posiziono l'ultima riga aggiunta,prima cella o colonna come volete,pronta all'input da tastiera,una volta inserito il dato con il tab proseguo sulle celle o colonne successive,una volta terminato,registro il tutto.
    Questo 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
    vi sembra che vi sia una relazione di dati associati,come è stato detto prima,oppure è una registrazione a se stante che niente a che vedere con datagridview associati a dati?
    Probabilmente,avendo omesso parti di codici c'è stata una errata interpretazione...chiedo venia..a volta parto con il presupposto che magari era chiaro il mio concetto.
    comunque,il refresh del datagridview non funziona.
    Ultima modifica di vnt54; 20-02-2023 a 22:53
    Sono stato nella terra della paura e dei vampiri...in transilvania?NO!..in Banca!

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.