Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: daviel 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:
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
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
-
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.
-
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
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:
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:
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?
-
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.
-
gracias leandro cuando llegue a mi casa lo pruebo a ver que tal me va. si me funciona o no.
-
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.
-
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:
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:
Referencia a objeto no establecida como instancia de un objeto.
En la sugerencia me dice:
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
-
Revisa esto puede que te ayude en algo.
http://www.solovb.net/index.php/2009/02/19/modificar-datos-de-un-listview/ (http://www.solovb.net/index.php/2009/02/19/modificar-datos-de-un-listview/)
Saludos.
-
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
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