Autor Tema: Eliminar Registros "X" de un ListView  (Leído 6465 veces)

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

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Eliminar Registros "X" de un ListView
« en: Abril 06, 2010, 02:29:46 pm »

Bien, estuve buscando y tratando de hacerlo y no logré mucho.

El caso es que tengo un listado, por ejemplo:

1    aaa      x
2    bbb      x
3    cccc      y
4    ddd      y
5    eee      z
6    ddd      y

Ahora bien, lo que necesito es una rutina, que me permita eliminar todo lo que contenga X en la tercera columna...! Yo estoy tratando con algo así...

Código: (vb) [Seleccionar]
Private Function Eliminar_Item_ListView(ListView As ListView)
'On Error Resume Next

Dim i As Integer
Dim j As Integer


     With ListView
         ' -- Recorrer todos los items
         For i = 1 To .ListItems.Count
               
               
             For j = i + 1 To .ListItems.Count
             
                If .ListItems.Item(i).ListSubItems(2).Text = "X" Then
                    ' -- Si es igual eliminar
                    .ListItems.Remove .ListItems.Item(i).Index
                    j = j - 1
                End If
               
                If j = .ListItems.Count Then
                    Exit For
                End If
               
             Next
               
               
         Next

     End With

End Function

Alli exactamente teniendo el listado de arriba lo hace...

Pero si solo muestro las X

1    aaa      x
2    bbb      x

y deseo eliminar o borrar las X con ese codigo, me elimina solo una...! :(

Agradezco si alguien puede ver el error. Saludos
Miguel Núñez.

erbuson

  • Kilobyte
  • **
  • Mensajes: 75
  • Reputación: +11/-1
    • Ver Perfil
Re:Eliminar Registros "X" de un ListView
« Respuesta #1 en: Abril 06, 2010, 03:30:15 pm »
El listView no suelo utilizarlo pero si mucho el MsFlexGrid y cuando desea eliminar filas con un determinado contenido, tengo la costumbre de hacer el bucle a la inversa p sea, desde ListCount-1 hasta 0 y así no me tengo que complicar la vida comparando si o no debo restar para jugar con el For Next

Tope = listCount -1

For Bucle = Tope to 0 Step -1
  ' Si tiene la X eliminarlo simplemente
next

Tal vez la idea te sirva.


ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Eliminar Registros "X" de un ListView
« Respuesta #2 en: Abril 06, 2010, 04:21:48 pm »
Vamos que simple... Funciono así...

Código: (vb) [Seleccionar]
Private Function Eliminar_Item_ListView(ListView As ListView)
On Error Resume Next
Dim i As Integer


     With ListView
         ' -- Recorrer todos los items
         For i = .ListItems.Count To 0 Step -1
               
            If .ListItems.Item(i).ListSubItems(2).Text = "X" Then
                ' -- Si es igual eliminar
                .ListItems.Remove .ListItems.Item(i).Index
            End If

         Next

     End With

End Function

No recordaba para nada esto: For i = .ListItems.Count To 0 Step -1

Dios, a retomar los cuadernos...!  ::)

Gracias
Miguel Núñez.