Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Borrar Registro En Listview/gridview
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Borrar Registro En Listview/gridview 
 
Por favor alguien me puede decir como eliminar de un listview y de un gridview el registro seleccionado
gracias
 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
No se borran registros. Ni gridview ni listview trabajan con registros. Trabajan con filas. Tu quieres borrar una fila.

El caso del listview funciona igual que el treeview y el columnview. Todos estos controles que organizan sus filas mediante una clave bien para mostrar una estructura jerárquica (columnview y treeview) como para mostrar un icono y un texto (listview) funcionan igual.

Siempre tienes dos cursores. Uno el cursor físico que es donde tu te pones con el ratón y el teclado. A las propiedades y métodos de este item accedes mediante la propiedad current

Listview.current.text ---> devuelve el texto donde estas
listview.current.key ---> devuelve la clave donde estás
Treeview.current.text ---> devuelve el texto donde estas
Treeview.current.key ---> devuelve la clave donde estás
Columnview.current.text ---> devuelve el texto donde estas
Columnview.current.key ---> devuelve la clave donde estás

Pero a partir de ahi tu te puedes mover con el cursor lógico. Lo haces mediante moveparent, movechild, moveabove, moveback,movefirst,movelast,movenext,moveprevious,moveto. Con ellos lo que haces es mover el cursor lógico a otro sitio que te interesa.

¿Porque vas a otro sitio? Pues por varias razones. Una de ellas es porque quieres saber algo de ese otro sitio (por ejemplo su key)

Cuando te vas a otro sitio el cursor físico sigue en el mismo sitio. Para acceder al lugar donde te has ido accedes a traves de item

Listview.item.text ---> devuelve el texto donde está el cursor lógico
listview.item.key ---> devuelve la clave donde está el cursor lógico
Treeview.item.text ---> devuelve el texto donde está el cursor lógico
Treeview.item.key ---> devuelve la clave donde está el cursor lógico
Columnview.item.text ---> devuelve el texto donde está el cursor lógico
Columnview.item.key ---> devuelve la clave donde está el cursor lógico

y resulta que todos estos controles tienen un método llamado en el caso de tu duda REMOVE que requiere como argumento la clave del que quieres borrar.

Así que si tu quieres pinchar uno y que se borre harás
listview.remove(listview.current.key) ---> borras aquel cuya clave es la clave donde estás.
y si quieres borrar al de abajo haces
listview.movenext
listview.remove(listview.item.key) ---> mueves el cursor lógico al de abajo, ves su clave y se la das como argumento al método remove

¿Me he explicado?
 

El caso del gridview es distinto porque allí los elementos no se organizan por claves.

En un gridview no tienes el método remove. Hay varias cosas que puedes hacer. Para no entrar a discutir todas ellas, la más fácil que veo es simplemente hacer un clear (que lo borra todo menos la cabecera) y rellenar de nuevo. Por eso yo suelo tener una rutina que es la que llena el gridview y que la llamo cada vez que la necesito.

Private sub BorrarFila()
aquí haces lo que sea para que ese dato no esté en la tabla o array o lo que sea
y luego llenas de nuevo
llenarCuadro()
end sub

Y tienes una rutina que es la de rellenar. Te pasteo una que tengo que pone los datos formateados y con las filas a dos colores para que hagas algunas pruebas. Naturalmente tendrás que adaptarlas a tu caso

En este caso yo leía una tabla y dejaba algunos datos en un gridview llamado cuadro y la rutina de llenar es esta:
PRIVATE SUB LlenarCuadro(Cn AS Connection, Rs AS Result)
  DIM MiColor AS Integer, MiColor2 AS Integer, Contador AS Integer = 0
  cuadro.Clear 'borrar gridview
  rs.MoveLast 'ir al final para saber cuantos registros tengo
  cuadro.Rows.count = rs.Count 'poner tantas filas como registros
  rs.MoveFirst 'volver al principio
    
  DO WHILE rs.Available
    micolor = IIf(rs!cactivo, Color.Black, Color.DarkGray)
    micolor2 = IIf(rs!cactivo, Color.White, Color.LightBackground)
    
    cuadro[contador, 0].ForeColor = micolor 'se van alternando un color de tinta y de papel
    cuadro[Contador, 0].text = rs!codigo
    cuadro[contador, 0].backcolor = micolor2
    cuadro[contador, 1].ForeColor = micolor
    cuadro[Contador, 1].text = rs!contrato
    cuadro[contador, 1].backcolor = micolor2
    cuadro[contador, 2].ForeColor = micolor
    cuadro[Contador, 2].text = rs!nombre
    cuadro[contador, 2].backcolor = micolor2
    cuadro[contador, 3].ForeColor = micolor
    cuadro[Contador, 3].text = rs!externo
    cuadro[contador, 3].backcolor = micolor2
    cuadro[contador, 4].ForeColor = micolor
    cuadro[Contador, 4].text = rs!f_inicio
    cuadro[contador, 4].backcolor = micolor2
    cuadro[contador, 5].ForeColor = micolor
    cuadro[Contador, 5].text = rs!f_fin
    cuadro[contador, 5].backcolor = micolor2
    contador += 1
    rs.MoveNext
  LOOP


Tómalo a modo de ejemplo
 



 
última edición por soplo el Domingo, 22 Noviembre 2009, 20:33; editado 2 veces 
soplo - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
gracias por las explicaciones
 



 
destroyer - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
Respecto a como borrar un registro del GridView he visto esta solución por ahí.

GridView.Rows.Remove (GridView.Row) ' Te borra el registro actual
 



 
karpaga - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
Como dijo soplo en su anterior post, los listview/gridview no tienen registros, sino filas.

Llamamos registros a las entradas de una base de datos, no a su representación en un gridview, que se llaman filas (aunque provienen efectivamente de registros de la base de datos).

Si estás llenando tu gridview con datos de una base de datos, y lo que quieres es eliminar un registro de la bd y por consiguiente la fila correspondiente de tu gridview, entonces lo que deberías hacer es repetir el proceso de "llenado" de tu gridview, es decir, actualizarlo.

También depende del método que uses para hacerlo, mediante un bucle que recorre los registros de la bd y va llenendo celdas, o bien usando el evento _Data del gridview.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
jguardon escribió: [Ver mensaje]
Como dijo soplo en su anterior post, los listview/gridview no tienen registros, sino filas.

Llamamos registros a las entradas de una base de datos, no a su representación en un gridview, que se llaman filas (aunque provienen efectivamente de registros de la base de datos).

Si estás llenando tu gridview con datos de una base de datos, y lo que quieres es eliminar un registro de la bd y por consiguiente la fila correspondiente de tu gridview, entonces lo que deberías hacer es repetir el proceso de "llenado" de tu gridview, es decir, actualizarlo.

También depende del método que uses para hacerlo, mediante un bucle que recorre los registros de la bd y va llenendo celdas, o bien usando el evento _Data del gridview.

Saludos



Hola, yo a lo que me refiero con registro efectivamente es a una fila del gridview o el registro actual seleccionado del propio gridview. Leyendo el  post que hace destroyer no queda claro si el se refiere a un registro del control o de la Base de Datos, es mas, yo he interpretado que se refiere al registro del control porque en su post dice "como eliminar de un listview y de un gridview el registro seleccionado". Por ningún lado comenta nada de Base de Datos.

Aparte de todo esto, en un programa que estoy haciendo, probé la opción de limpiar el gridview y luego llenarlo de nuevo y me parece una burrada porque dependiendo de los registros que tengas se va a notar mucho al "pintarlos". Yo si lo hago con 300 registros nada mas se nota mucho, por lo que lo solucioné de otra forma. Primero borro el registro de la base de datos que tengo seleccionado en el gridview (cn.exec("Delete from xxx.....")) y luego lo borro del grid de la manera que comenté en el post anterior.
 



 
karpaga - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
karpaga escribió: [Ver mensaje]
.

Aparte de todo esto, en un programa que estoy haciendo, probé la opción de limpiar el gridview y luego llenarlo de nuevo y me parece una burrada porque dependiendo de los registros que tengas se va a notar mucho al "pintarlos". Yo si lo hago con 300 registros nada mas se nota mucho, por lo que lo solucioné de otra forma. Primero borro el registro de la base de datos que tengo seleccionado en el gridview (cn.exec("Delete from xxx.....")) y luego lo borro del grid de la manera que comenté en el post anterior.


Eso es cierto, pero si usas el evento _Data para "llenar" el gridview no tendrás ese problema, ya que su particularidad es que sólo se dibujan las celdas visibles (y realmente sólo se le piden esos datos a la base de datos) siendo extremadamente rápido con cualquier número de filas y columnas. Y hablo de miles!!

Uso del evento Data para llenar un gridview
PRIVATE $hres AS Result

PUBLIC SUB Form_Open()

DIM sql as String

  gridview.Columns.Count = 4  
  gridview.Columns[0].Text = ("Campo1")
  gridview.Columns[1].Text = ("Campo2")
  gridview.Columns[2].Text = ("Campo3")
  gridview.Columns[3].Text = ("Campo4")

  sql = "SELECT * FROM tuTabla"
  $hres = conexion.Exec(sql)
  gridview.Rows.Count = $hres.Count

END

'este es el manejador del evento Data
PUBLIC SUB gridview_Data(Row AS Integer, Column AS Integer)
    $hres.MoveTo(Row)  

    ' Esta línea sólo es para alternar los colores de las filas
    IF row MOD 2 = 0 THEN gridview.Data.Background = Color.LightBackground
END
 


Evidentemente esto es un ejemplo y deberás adaptarlo a los campos de tu base de datos, pero siempre que haya cambios en el objeto $hres (de tipo Result), éstos se reflejarán inmediatamente en su representación en el gridview.

Si te surgen dudas, pregunta.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
jguardon escribió: [Ver mensaje]

Eso es cierto, pero si usas el evento _Data para "llenar" el gridview no tendrás ese problema, ya que su particularidad es que sólo se dibujan las celdas visibles (y realmente sólo se le piden esos datos a la base de datos) siendo extremadamente rápido con cualquier número de filas y columnas. Y hablo de miles!!


Me imagino que de esta manera está enlazado el control directamente con la base de datos, no? No sabía nada acerca del evento data, es otra buena alternativa, ¿puede ser esto parecido o igual a cuando en VB6 se enlazaba un datacontrol a una tabla de la BBDD o a un recordset?

Saludos.
 



 
karpaga - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
Digamos que está "enlazado" al objeto result que se usa para obtener datos de una consulta...  

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Borrar Registro En Listview/gridview 
 
Hola colega.
Te voy a decir como lo hago yo y espero que te sirva, como mínimo para conocer otra forma.

Declara un array con los campos que van a ocupar cada columna en el gridview y rellenalo así
PUBLIC arrCampos AS String[4]

  arrCampos[0] = "campo1"
  arrCampos[1] = "campo2"
  arrCampos[2] = "numero1"
  arrCampos[3] = "numero2"
 


en el evento data puedes controlarlo así


PUBLIC SUB gridview_Data(Row AS Integer, Column AS Integer)

  rstped.MoveTo(row)
  'Si es un numero lo alineo a la derecha y le doy el formato que quiera
  IF Column > 1 THEN
      grdped[Row, Column].Alignment = Align.Right
      grdped.Data.Text = Format(rstped[arrCampos[Column]], "#0.0000")
  ELSE
      grdped.Data.Text = rstped[arrCampos[Column]]
  ENDIF

END
 


Espero que te sirva
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Borrar Un Registro numero110 Bases de Datos 13 Sabado, 05 Diciembre 2009, 00:45 Ver último mensaje
shordi
No hay nuevos mensajes Selección Múltiple En Listview jose2190 Controles/Librerías/Componentes 3 Jueves, 03 Febrero 2011, 16:40 Ver último mensaje
jose2190
No hay nuevos mensajes No Me Puedo Modificar Y Tampoco Borrar El ... metalgearxd General 6 Domingo, 03 Febrero 2013, 00:00 Ver último mensaje
Shell
No hay nuevos mensajes Sql Borrar Y Editar Un Solo Registro Cua... codificador Bases de Datos 8 Sabado, 22 Junio 2013, 19:21 Ver último mensaje
codificador
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron