guardar datos de una grilla

Iniciado por crisoof, 16 Agosto 2019, 21:07 PM

0 Miembros y 1 Visitante están viendo este tema.

crisoof

Buenas tardes, intentare de ser lo mas claro posible para que me puedan ayudar.
El lenguaje es Visual Basic

tengo un dgv (datagridview) al cual el usuario realizara una modificacion de una celda en particular ingresando solo numeros, una vez que el usuario termine de realizar la modificacion en la celda toda la fila de este dgv sera agregado a un nuevo Dgv, el tema es que cuando el usuario realiza la modificacion se envia a la nueva grilla pero la celda no esta modificada, he leido bastante y al parecer tengo que controlar el evento cell dirty state change y dar el commit para que los datos en cache sean guardado, el tema es que cuando depuro la aplicacion los datos en la nueva fila se muestran cambiados pero no se ven reflajados en la grilla nueva  adjunto el codigo

' aqui estoy manejando que ingrese a la celda "Porcentaje"
Private Sub DgvTempo_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgvTempo.CellContentClick
        Dim i As Integer
        Dim row As DataGridViewRow = DgvTempo.CurrentRow
        Dim Vusuario, Vestacion As String

        With DgvTempo
            If e.RowIndex >= 0 Then

                i = .CurrentRow.Index

                If e.ColumnIndex = .Rows(i).Cells("Porcentaje").ColumnIndex Then

                    .Rows(i).Cells("Porcentaje").ReadOnly = False
                    CType(.Columns("Porcentaje"), DataGridViewTextBoxColumn).MaxInputLength = 2
                    Vusuario = CLLibreria.VgUsuarioCodigo
                    Vestacion = CLLibreria.VgEstacion
                    DTTemporada.Rows(i)("Usuario") = Vusuario
                    DTTemporada.Rows(i)("Estacion") = Vestacion

                Else
                    .Rows(i).ReadOnly = True
                End If
            End If

        End With
    End Sub

' aqui se supone que el cambio ya fue realizado y debe agregar la fila con los datos ya
' cambiados y agregarlos a la nueva grilla, estoy trabajando con los dataTable de las grillas
Private Sub DgvTempo_CellValidated(sender As Object, e As DataGridViewCellEventArgs) Handles DgvTempo.CellValidated
        Dim i As Integer
        Dim fila As DataRow
        Dim nvalor As Integer
        Dim nvalor2 As String
        Dim Vusuario, Vestacion As String

        nvalor = DgvTempo.CurrentRow.Cells("Porcentaje").Value
        nvalor2 = DTTemporada.Rows(e.RowIndex).Item("Porcentaje").ToString

        'MsgBox(CStr(nvalor) & " / " & nvalor2)

        With DgvTempo
            i = .CurrentRow.Index

            If e.ColumnIndex = .Rows(i).Cells("Porcentaje").ColumnIndex And .Rows(i).Cells("Porcentaje").Value > 0 Then

                fila = DTTemporada.Rows(i)
                fila("Porcentaje") = .CurrentRow.Cells("porcentaje").Value
                DTtempo.ImportRow(fila)
                Vusuario = CLLibreria.VgUsuarioCodigo
                Vestacion = CLLibreria.VgEstacion
                DTtempo.Rows(i)("Usuario") = Vusuario
                DTTemporada.Rows(i)("Estacion") = Vestacion
                DgvTemporada.DataSource = DTtempo

                DgvTemporada.Columns("Id_PreTemp").Visible = False
                DgvTemporada.Columns("Cod_tienda").Visible = False
                DgvTemporada.Columns("Cod_Temporada").Visible = False
                DgvTemporada.Columns("Cod_Marca").Visible = False
                DgvTemporada.Columns("Usuario").Visible = False
                DgvTemporada.Columns("Estacion").Visible = False
                DgvTemporada.AllowUserToAddRows = False
                DgvTemporada.RowHeadersVisible = False
                DTTemporada.Rows.RemoveAt(i)

                If DgvTemporada.Rows.Count > 0 Then

                    If Not VBtnCreado Then

                        CreaBtnEliminar()
                    End If
                End If
            End If
        End With

    End Sub


en la nueva grilla me meustra la fila agregada pero con la columna porcentaje con los valores en 0...

Llevo 2 dias atorado espero alguno me pueda ayudar

Saludos

crisoof

encontre la solucion, no la entiendo del todo pero lo encontre, luego de intentar con los eventos, darle commit, el celldirty state changed, endedit, etc no me funciono ni uno seguramente era lo forma en la que estaba realizando las llamdas a estos eventos porque segun lo que lei y la solucion a mis problemas fue utilizar el AcceptChanges() al dataTable al que estaba enlazado el dgv, segun lei esto implicitamente llama al endedit, pero como yo llamaba al enedit de las grillas y no a los datatables, quizas por eso no me tomaba los cambios, pero que se yo, lo pude lograr gracias a quienes se tomaron el tiempo en leer

Saludos