none
eliminar filas vacias de un datagridview RRS feed

  • Pregunta

  • hola amigos estoy intentando borrar filas vacias de un datagridview con este codigo

     Dim X As Integer


            For X = 0 To Me.DataGridView2.Rows.Count - 1
                If Me.DataGridView2.Rows(X).Cells(1).Value = Nothing Then
                    Me.DataGridView2.Rows.Remove(Me.DataGridView2.Rows(X))
                End If
            Next

    pero me sale un error dice que:

     

    la nueva fila sin confirmar no se puede aliminar

    me podrian ayudar porfavor

    sábado, 14 de mayo de 2011 16:06

Respuestas

  • Prueba a eliminar las filas recorriendo el bucle en orden inverso: desde la última fila hasta la primera:

        For n As Integer = DataGridView2.Rows.Count - 1 To 0 Step -1
    
          Dim row As DataGridViewRow = DataGridView2.Rows(n)
    
          If (row.Cells(1).Value Is DBNull.Value) Then _
           DataGridView2.Rows.Remove(row)
    
        Next
    

     

    Un saludo

     

    sábado, 14 de mayo de 2011 16:48
    Moderador
  • Buenas juan11mh.

    Tiene pinta que estés intentando eliminar una fila que está en edición.

    Prueba a añadir la condición siguiente:

     

    For X = 0 To Me.DataGridView2.Rows.Count - 1
      If Me.DataGridView2.Rows(X).Cells(1).Value = Nothing Then
       If Not(Me.DataGridView2.Rows(X).IsNewRow)
         Me.DataGridView2.Rows.Remove(Me.DataGridView2.Rows(X))
       End If
      End If
    Next
    

     

    Un saludo.


    http://www.lopezatienza.es

    sábado, 14 de mayo de 2011 16:57

Todas las respuestas

  • Prueba a eliminar las filas recorriendo el bucle en orden inverso: desde la última fila hasta la primera:

        For n As Integer = DataGridView2.Rows.Count - 1 To 0 Step -1
    
          Dim row As DataGridViewRow = DataGridView2.Rows(n)
    
          If (row.Cells(1).Value Is DBNull.Value) Then _
           DataGridView2.Rows.Remove(row)
    
        Next
    

     

    Un saludo

     

    sábado, 14 de mayo de 2011 16:48
    Moderador
  • Buenas juan11mh.

    Tiene pinta que estés intentando eliminar una fila que está en edición.

    Prueba a añadir la condición siguiente:

     

    For X = 0 To Me.DataGridView2.Rows.Count - 1
      If Me.DataGridView2.Rows(X).Cells(1).Value = Nothing Then
       If Not(Me.DataGridView2.Rows(X).IsNewRow)
         Me.DataGridView2.Rows.Remove(Me.DataGridView2.Rows(X))
       End If
      End If
    Next
    

     

    Un saludo.


    http://www.lopezatienza.es

    sábado, 14 de mayo de 2011 16:57
  • Segun el error la nueva fila sin confirmar no se puede aliminar parece ser una proctecion del control para mantener la integridad entre el control y el datasource subyacente, segun puedo interpretar no puede eliminar una fila de la grilla sin confirmarcelo al datasource subyacente. como una alternativa puede tratar de ocultar las filas que cumplan la condicion que busca


    Angel R. Jimenez G.
    Software Development
    Santo Domingo
    Republica Dominicana
    sábado, 14 de mayo de 2011 23:59
  • hola

    el tema es que sino entendi mal no puede eliminar items del grid mientra los recorres

    http://social.msdn.microsoft.com/Forums/es/vbes/thread/0ab17b6c-da89-48a3-ad79-20464f7d3fef

    prueba de aplciar la tecncia que comento en esa otra pregunta similar ala que haces aqui

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 15 de mayo de 2011 1:35
  • "Leandro Tuttini" afirmó:

    > el tema es que sino entendi mal no puede eliminar items del grid mientra los recorres

    ¿Tú estás seguro de lo que acabas de afirmar?

     


    Enrique Martínez
      [MS MVP - VB]


    domingo, 15 de mayo de 2011 9:04
    Moderador