Autor Tema: Como trabajar con un ListView  (Leído 9017 veces)

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

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Como trabajar con un ListView
« en: Junio 08, 2010, 03:10:54 pm »
Hola a todos, primero que nada me presento, quisas este lugar no sea el adecuado para hacerlo.

Bueno soy un lector de los post buestros, me encanto el telnet de coco...
Mi pregunta es la siguiente.
Tengo un listview al que le añado datos por codigo, y muchos de estos datos son añadidos desde una bd de forma dinamica.
Mi intencion es que una vez sean añadido los datos de forma dinamica el usuario pueda editar o añadir los datos que crea correspondiente en el mismo listview.
Para rellenar darle valores al listview lo hago al cargar el form llamo a esta funcion:
Código: [Seleccionar]
    Sub listview_añadirdatos()
        posturas.Columns.Add("Fecha", "Fecha")
        posturas.Columns.Add("Huevos", "Huevos")
        posturas.Columns.Add("Nacidos", "Nacidos")
        posturas.Columns.Add("Fecundados", "Fecundados")
        posturas.Columns.Add("Bajas", "Bajas")
        posturas.Columns.Add("Observaciones", "Observaciones")
        posturas.View = View.Details
    End Sub

Luego una vez ya ha cargado el form, realizo lo siguiente para rellenar los datos de forma dinamica
Código: [Seleccionar]
        num = postura.TraerRow(pareja.ID)
        Dim a As Integer = 0

        posturas.FullRowSelect = False
        posturas.LabelEdit = True
        Do While a < num
            postura.TraerPostura(pareja.ID, a)
            posturas.Items.Add(postura.FECHA)
            posturas.Items(a).BackColor = Drawing.Color.White
            posturas.Items(a).SubItems.Add(postura.HUEVOS)
            posturas.Items(a).SubItems.Add(postura.FECUNDADOS)
            posturas.Items(a).SubItems.Add(postura.NACIDOS)
            posturas.Items(a).SubItems.Add(postura.BAJAS)
            posturas.Items(a).SubItems.Add(postura.OBSERVACION)
            a = a + 1
        Loop

Aclaraciones: tengo la variable postura que hace referencia a una clase que me cree para llevar todo el tema de acceso a la bd, y posturas que es el nombre del listview.
Como ven tengo la propiedad LabelEdit a true, pero no sucede nada, es decir, no puedo editar ningun dato.

Podrian decirme como orientarme para que me funcione.


Saludos y gracias a todos

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #1 en: Junio 08, 2010, 07:31:57 pm »
Eso no parece Visual Basic 6, es .Net ?
En fin, el LabelEdit se activa con un doble clic, tal como cuando queres cambiar el nombre de una carpeta o archivo. Es eso¿?

Saludos.

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #2 en: Junio 08, 2010, 07:56:59 pm »
perdona por confundirme tienes razon es .net.

Bueno, cuando doy dobleclick sobre el control nopasa nada. solo se selecciona pero no se pone en modo edicion.
Lo que realize fue lo siguiente, generar el evento selectindexchange sobre el listview
Código: [Seleccionar]
    Private Sub posturas_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles posturas.SelectedIndexChanged
        If posturas.SelectedItems.Count > 0 Then 'Si hay algún item seleccionado
            Dim vForm2 As New formulario
            vForm2.fecha.Text = posturas.FocusedItem.Text
            vForm2.nacidos.Text = posturas.FocusedItem.SubItems(1).Text
            vForm2.huevos.Text = posturas.FocusedItem.SubItems(2).Text
            vForm2.fecundados.Text = posturas.FocusedItem.SubItems(3).Text
            vForm2.bajas.Text = posturas.FocusedItem.SubItems(4).Text
            vForm2.observaciones.Text = posturas.FocusedItem.SubItems(5).Text
            vForm2.ShowDialog()
        End If
    End Sub

Preguntar si hay alguno seleccionado y enviarle el contenido del selecionado a un nuevo formulario .

En dicho formulario tengo los recivo con unos texbox, y tengo dos botones, uno para cancelar que seria me.close
y otro para validar las modificaciones y guardarlas en el listview que estamos editando:
Código: [Seleccionar]
Dim d As New ficha_aves
'la validacion no la pongo por que utilizo if para darle el foco al campo sin rellenar. solo pongo como le paso los datos al form principal
        Try
            d.posturas.FocusedItem.Text = fecha.Text
            d.posturas.FocusedItem.SubItems(1).Text = huevos.Text
            d.posturas.FocusedItem.SubItems(2).Text = nacidos.Text
            d.posturas.FocusedItem.SubItems(3).Text = fecundados.Text
            d.posturas.FocusedItem.SubItems(4).Text = bajas.Text
            d.posturas.FocusedItem.SubItems(5).Text = observaciones.Text
        Catch ex As EvaluateException
            MsgBox(ex.Message)
        End Try

Ahora para añadir un nuevo item al listview como podria hacerlo?

Lo acabo de solucionar añadiendo un btn que se llama añadir:
Código: [Seleccionar]
        Dim vForm2 As New formulario
        vForm2.fecha.Text = Date.Today
        vForm2.nacidos.Text = ""
        vForm2.huevos.Text = ""
        vForm2.fecundados.Text = ""
        vForm2.bajas.Text = ""
        vForm2.observaciones.Text = ""
        vForm2.ShowDialog()
Aqui le paso parametros vacios a los texbox del otro formulario, menos la fecha, ya que añado la fecha actual.

Ahora como los guardo en el listview?
« última modificación: Junio 08, 2010, 08:06:21 pm por daviel »

LeandroA

  • Administrador
  • Petabyte
  • *****
  • Mensajes: 1128
  • Reputación: +151/-8
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #3 en: Junio 08, 2010, 10:05:55 pm »
en el formulario donde vas a editar los items declara una variable publica donde se va a almacenar el index del item luego cuando aceptas los cambios haces algo asi (no te doy exactamente como porque no se como hacerlo en .net y el nombre de tus forms)

elformulario.posturas.Items(index).text = lo que sea
elformulario.posturas.Items(index).SubItems(1).Text = lo que sea

no se si es esa tu duda?.

Saludos.


daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #4 en: Junio 09, 2010, 08:05:11 am »
gracias leandro cuando llegue a mi casa lo pruebo a ver que tal me va. si me funciona o no.


wolf_kof

  • Visitante
Re:Como trabajar con un ListView
« Respuesta #5 en: Junio 09, 2010, 02:28:59 pm »
Bueno en primer lugar de eso ya hay un ejemplo que lo proporociono nuestro amigo SSCCAANN con una base de datos SQL 2000 ahora en .net vere si puedo subir un ejemplo dentro de unos dias.... asi dije con el softmega y lo subi comoun mes despues asi que ten pasiencia.

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #6 en: Junio 09, 2010, 03:45:55 pm »
Gracias a todos por las respuestas.

Bueno, no puedo guardar los datos obtenidos en el listview.
Intente como planteaste leandro pero no obtube nada.
Luego asocie una var al form principal y realize lo siguiente, y me lo admite:
Código: [Seleccionar]
        Dim d As New ficha_aves

        Try
            d.posturas.FocusedItem.Text = fecha.Text
            d.posturas.FocusedItem.SubItems(1).Text = huevos.Text
            d.posturas.FocusedItem.SubItems(2).Text = nacidos.Text
            d.posturas.FocusedItem.SubItems(3).Text = fecundados.Text
            d.posturas.FocusedItem.SubItems(4).Text = bajas.Text
            d.posturas.FocusedItem.SubItems(5).Text = observaciones.Text
            d.posturas.Refresh()
        Catch ex As EvaluateException
            MsgBox(ex.Message)
        End Try

Pero cuando lo intento de probar a ver si funciona, pues me muestra el siguente error:
Citar
Referencia a objeto no establecida como instancia de un objeto.
En la sugerencia me dice:
 
Citar
utilize la palabra new para crear una instancia de objeto
determine si el objeto es null antes de llamar al metodo
obtener ayuda general sobre esta excepcion

NolO

  • Kilobyte
  • **
  • Mensajes: 73
  • Reputación: +6/-0
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #7 en: Junio 09, 2010, 04:07:58 pm »

daviel

  • Bytes
  • *
  • Mensajes: 12
  • Reputación: +0/-0
    • Ver Perfil
Re:Como trabajar con un ListView
« Respuesta #8 en: Junio 09, 2010, 05:02:29 pm »
exelente Nolo  ;D

ya lo tengo solucionado. Gracias, exelente...

Para añadir, es decir, para no modificar los datos y añadir utilizando el mismo procedimiento, es igual con la diferencia que ya no estas utilizando el item selected . y que tienes que tener la posicion en que lo almacenas. Pongo este ejemplo
Código: [Seleccionar]
            Dim temporal As Integer = My.Forms.ficha_aves.posturas.Items.Count
            My.Forms.ficha_aves.posturas.Items.Add(fecha.Text)
            My.Forms.ficha_aves.posturas.Items(temporal).SubItems.Add(huevos.Text)


Gracias  a todos.. Exelente ya esa parte de mi code funciona.. Jejeje