none
Quitar fila datagridview sin eliminarla de la tabla RRS feed

  • Pregunta

  • Quisiera quitar una fila dentro e un datagridview, ya lo tengo creado con el evento CLICK, lo único que si coloco las siguientes lineas:

    Dim pos As Integer = Me.CCobrarDataGridViewX.CurrentRow.Index
            Me.CCobrarDataGridViewX.CurrentCell = Nothing
            Me.CCobrarDataGridViewX.Rows(pos).Visible = False

    Simplemente me lo oculta, uy en momento de hacer el calculo en las columnas estos estan inamovibles por supuesto porque solo oculta la fila.

    En cambio si utilizo el CURRENT ROWS.REMOVE me lo elimina y como declaro arriba, solo quiero quitarlo del datagridview momentaneamente para que me calcule la suma y almacenarlo.

    Gracias por su contestación

    miércoles, 10 de septiembre de 2014 21:37

Respuestas

  • Bien, encontré una solución poco ortodoxa pero que realiza lo que deseo

      CCobrarDataGridViewX.CurrentRow.Cells(7).Value = 1
            Me.CCobrarBindingSource.Filter = "SUCURSAL not Like '1%'" & "and Cliente LIKE  '" & ClienteCB.Text & "%'"
            CCobrarBindingSource.MoveNext()

            Calculocxc()

    Donde al darle click, en una columna reemplaza el valor anterior (0) por 1, y luego inmediatamente que haga un filtrado tanto por los que no son 1, asi como por CLIENTE, pues ocupaba esto en especifico, uso el MOVENEXT() para darle 'validación' la acción y al final llamo el calculo, al almacenarlos vuelvo a asignarle 0 a la columna SUCURSAL para futuros calculos.

     Si tienen una manera mas sencilla y que sea parte de la estructura de VB.Net, pues es bienvenida, porque este sistema que utilice no es para nada ortodoxo pero si funcional.

    A todos los que me contestaron. MUCHISIIIIMAS GRACIAAAAAS

    • Marcado como respuesta Marcos Montoya jueves, 11 de septiembre de 2014 4:05
    jueves, 11 de septiembre de 2014 4:04

Todas las respuestas

  • Hola Marcos, debes generar el evento RowsRemoved del DataGridView dentro del evento controlas que no elimine de la base de datos:

    Private Sub RowsRemoved(ByVal sender As Object, _
        ByVal e As DataGridViewRowsRemovedEventArgs) _
        Handles DataGridView1.RowsRemoved
    
        ' Aqui es donde realizas la acción para que no vaya a la BD.
    End Sub

    O puedes hacerlo así:

    If Me.dataGridView1.SelectedRows.Count > 0 Then
        dataGridView1.Rows.RemoveAt(Me.dataGridView1.SelectedRows(0).Index)
    End If

    Espero resulte de utilidad.

    Saludos


    Christian Amado
    Software Engineer | MCPD: Windows Phone Developer | MCTS: Silverlight Developer
    Don't forget to mark the right answer and vote up if helps you.
    MCP Profile

    miércoles, 10 de septiembre de 2014 23:01
  • Gracias Christian por responder, tu respuesta es efectiva, pero que en mi caso tengo desplegado los datos de datagridview, al darles click estos se tienen que ir eliminando pero no físicamente de la base de datos, sino solamente del DGV. Saludos
    miércoles, 10 de septiembre de 2014 23:40
  • Gracias por la respuesta, pero lo pondré mas sencillo,... al darle click a la fila, esta tiene que desaparecer del DGV como si de un filtro se tratase, pero que al darle click a GUARDAR, estas no se eliminen físicamente de la BD.
    jueves, 11 de septiembre de 2014 1:04
  • Bien, encontré una solución poco ortodoxa pero que realiza lo que deseo

      CCobrarDataGridViewX.CurrentRow.Cells(7).Value = 1
            Me.CCobrarBindingSource.Filter = "SUCURSAL not Like '1%'" & "and Cliente LIKE  '" & ClienteCB.Text & "%'"
            CCobrarBindingSource.MoveNext()

            Calculocxc()

    Donde al darle click, en una columna reemplaza el valor anterior (0) por 1, y luego inmediatamente que haga un filtrado tanto por los que no son 1, asi como por CLIENTE, pues ocupaba esto en especifico, uso el MOVENEXT() para darle 'validación' la acción y al final llamo el calculo, al almacenarlos vuelvo a asignarle 0 a la columna SUCURSAL para futuros calculos.

     Si tienen una manera mas sencilla y que sea parte de la estructura de VB.Net, pues es bienvenida, porque este sistema que utilice no es para nada ortodoxo pero si funcional.

    A todos los que me contestaron. MUCHISIIIIMAS GRACIAAAAAS

    • Marcado como respuesta Marcos Montoya jueves, 11 de septiembre de 2014 4:05
    jueves, 11 de septiembre de 2014 4:04