Título: guardar datos de una grilla
Publicado por: crisoof en 16 Agosto 2019, 21:07 pm
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
Título: Re: guardar datos de una grilla
Publicado por: crisoof en 17 Agosto 2019, 00:46 am
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
|