+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 7 su 7

Discussione: [VS2017] Anomalia in anullamento modifiche DataGridView

  1. #1
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169

    [VS2017] Anomalia in anullamento modifiche DataGridView

    Buongiorno a Tutti!

    sulla mia Form ho inserito un bottone il cui compito è abilitare/disabilitare la modifica da parte dell'utente di una DGV, collegata ad un BindingSource (a sua volta collegato a una Table di un DataSet) presente sulla stessa Form:

    Private Sub BtnModifica_Click(sender As Object, e As EventArgs) Handles btnModifica.Click
    If btnModifica.Text = "Modifica" Then
    dgvProg.EndEdit()
    With dgvProg
    .ReadOnly = False
    .AllowUserToAddRows = True
    .EditMode = DataGridViewEditMode.EditOnEnter
    End With
    ScegliMacchina.Enabled = False
    AbilitaControlli(True)
    btnModifica.Text = "Annulla Modifiche"
    Else
    MsgBox(dgvProg.CancelEdit())
    ProgrammatoreDataSet.RejectChanges()
    With dgvProg
    .ReadOnly = True
    .AllowUserToAddRows = False
    .EditMode = DataGridViewEditMode.EditProgrammatically
    End With
    ScegliMacchina.Enabled = True
    AbilitaControlli(False)
    AggiornaDgvProg()
    btnModifica.Text = "Modifica"
    End If
    End Sub

    Tralasciando la condizione sulla proprietà Text che non mi fa impazzire (se aveste suggerimenti in alternativa sono ben accetti), ho il problema in oggetto sul metodo CancelEdit.

    Quando annullo le modifiche a metà dell'inserimento della prima riga, mi annulla correttamente le modifiche ma poi non mi mostra più niente nella griglia, come se fosse stata svuotata la tabella sottostante. Se invece sono già presenti delle righe, funziona tutto come mi aspetto.

    La presenza o meno delle righe è discriminata dal filtro del BindingSource, che viene modificato ogni volta che viene cambiata la selezione all'interno della ComboBox [ScegliMacchina].

    Spero di aver lasciato tutte le info del caso.

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    A nessuno è capitata una cosa simile? In alternativa avreste dei suggerimenti su come effettuare l'annullamento delle modifiche apportate dalla DGV?

  3. #3
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Mi son permesso di chiedere altrove.

    https://stackoverflow.com/questions/...iew-canceledit

    Se dovessi ricevere risposta non mancherò di aggiornare questa discussione.


  4. #4
    patel45 non è in linea Scolaretto
    Post
    238
    forse ti manca un
    codice:
     ProgrammatoreDataSet.AcceptChanges()
    dopo aver popolato la dgv
    Ultima modifica di patel45; 07-07-2018 11:05 

  5. #5
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Ciao patel!

    Nel file designer.vb non ho trovato l'istruzione, allora l'ho aggiunta nell'evento Load della Form ma non ho ottenuto il risultato sperato. L'errore continua a presentarsi.
    La DGV resta sempre vuota...
    Ho notato però che il BindingNavigator che si è creato in automatico, le righe le vede correttamente. Quando cambio la selezione nella ComboBox si aggiorna con il numero di righe filtrate, ma non le vedo nella griglia. Questo anche senza la chiamata al metodo AcceptChanges()

  6. #6
    patel45 non è in linea Scolaretto
    Post
    238
    io ho un esempio simile che però non usa il binding
    codice:
        Dim dt As DataTable
        Dim Filename As String = "F:\Documenti\Visual Studio 2017\Projects\rubrica.csv"
        '---------------- leggi csv ---------------------------
        Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click
            dt = ReturnData()
            DataGridView1.DataSource = dt
            dt.AcceptChanges() ' necessario, altrimenti cancella la dgv
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            dt.RejectChanges()
        End Sub
    se elimino la riga dt.AcceptChanges() la dgv perde tutti i dati

  7. #7
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    169
    Ce l'ho anche io, ma nella Sub di salvataggio.
    codice:
        Private Sub Salva(sender As Object, e As EventArgs) Handles btnSalva.Click, SalvaToolStripMenuItem.Click, ProgrammaBindingNavigatorSaveItem.Click
            Stato.Text = "Salvataggio in corso..."
            ProgrammaBindingSource.EndEdit()
            TableAdapterManager.UpdateAll(ProgrammatoreDataSet)
            ProgrammatoreDataSet.AcceptChanges()
            If btnModifica.Text = "Annulla Modifiche" Then btnModifica.PerformClick()
            Stato.Text = "Salvato!"
        End Sub
    La cosa che mi sfugge è che sembra un errore grafico... Ho tentato anche la strada del metodo Invalidate() ma comunque non ridisegna le righe anche se ci sono in memoria... Bah! mi sa che dovrò tentare un'altra strada per l'annullamento delle modifiche...

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi