Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    32

    [VB.NET] eliminare row da datatable su controllo di relativa datagridview

    codice:
    Private Sub CancellaSelBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancellaSelBtn.Click
            Dim i As Integer
            For i = 0 To (Me.Turnides_TURNOLAVORATORIDataGridView.Rows.Count - 1)
                If (CBool(Me.Turnides_TURNOLAVORATORIDataGridView(Selezioneassegnati.Index, i).Value) = True) Then
                    Dim codlavoratoredgv As Integer = CInt(Me.Turnides_TURNOLAVORATORIDataGridView(dgvColLavoratore.Index, i).Value)
                    For Each row As movtestDataSet5.turnides_TURNOLAVORATORIRow In Me.MovtestDataSet5.turnides_TURNOLAVORATORI
                        If row.LAVORATORE = codlavoratoredgv Then
                            row.Delete()
                        End If
                    Next
                End If
            Next
    Mi dice che ho l'indice fuori...dove sbaglio?scusate,non ho ancora capito benissimo la relaizione che intercorre tra datagridview e datatable collegata

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    32
    ok,ho individuato il fatto che comunque il controllo lo devo fare su i-2 righe perchè lui conteggia anche la riga vuota visualizzata in più
    Ho individuato un altro errore nel problema che non posso accedere in lettura su una riga che ho cancellato da quello che ho capito

    codice:
    'If row.LAVORATORE = codlavoratoredgv Then
                        '    row.Delete()
                        'End If
    qui mi dà l'errore,non posso fare mi sa un controllo su una riga già cancellata

  3. #3
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Originariamente inviato da kastorix
    ok,ho individuato il fatto che comunque il controllo lo devo fare su i-2 righe perchè lui conteggia anche la riga vuota visualizzata in più
    Ho individuato un altro errore nel problema che non posso accedere in lettura su una riga che ho cancellato da quello che ho capito

    codice:
    'If row.LAVORATORE = codlavoratoredgv Then
                        '    row.Delete()
                        'End If
    qui mi dà l'errore,non posso fare mi sa un controllo su una riga già cancellata
    prova a fare un controllo prima di questo codice, magaria attraverso la proprietà RowState del datarow

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    32
    si,fatto,di fatto ho aggiunto un controllo che nel caso la riga è deleted non eseguo l'if dentro.
    Ora ci sono problemi di indice invece... nuovamente
    Riesce a cancellare una riga si e una no,devo aver sbagliato qualcosa nel ciclo.Alla fine è fuori indice nuovamente

  5. #5
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,537
    Originariamente inviato da kastorix
    si,fatto,di fatto ho aggiunto un controllo che nel caso la riga è deleted non eseguo l'if dentro.
    Ora ci sono problemi di indice invece... nuovamente
    Riesce a cancellare una riga si e una no,devo aver sbagliato qualcosa nel ciclo.Alla fine è fuori indice nuovamente
    non è che conti le righe del datagridview che sono diverse dal datatable associato nel caso ne abbia cancellate...?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    32

    risolto

    ho risolto,basta fare il controllo al contrario,se cancello,controllo comunque la riga precedente e non devo gestire in maniera demoniaca indici
    codice:
    rivate Sub CancellaSelBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CancellaSelBtn.Click
            Dim i As Integer
            Dim cont As Integer = (Me.Turnides_TURNOLAVORATORIDataGridView.Rows.Count - 2)
            For i = cont To 0 Step -1
                If (CBool(Me.Turnides_TURNOLAVORATORIDataGridView(Selezioneassegnati.Index, i).Value) = True) Then
                    Dim codlavoratoredgv As Integer = CInt(Me.Turnides_TURNOLAVORATORIDataGridView(dgvColLavoratore.Index, i).Value)
                    For Each row As movtestDataSet5.turnides_TURNOLAVORATORIRow In Me.MovtestDataSet5.turnides_TURNOLAVORATORI
                        If row.RowState <> DataRowState.Deleted Then
                            If row.LAVORATORE = codlavoratoredgv Then
                                row.Delete()
                            End If
                        End If
                    Next
                End If
            Next

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.