Com ja els vaig dir diverses vegades, el listview és un dels controls que més ús a l'hora de desenvolupar una aplicació en visual basic. Net.
Avui vull mostrar una forma de treure-li més profit a aquest control ia més deixar-ho molt més vistós mitjançant la creació de grups i la utilització d'una imatge per al fons.
per a l'exemple necessitem: un formulari i un listview. Haurà veure com en la següent imatge:

Per mostrar els resultats necessitem dades, i per això vaig crear un DataTable en memòria i el vaig omplir amb quatre registres. Els camps són Nom, Cognom, Telèfon i Localitat.
Vull mostrar en aquest exemple un llistat de persones amb els seus noms, cognoms i telèfons agrupats per localitat. Primer analitza el codi, si vols prova'l per veure com funciona i després t'explico un parell de coses.
Dim dt As New DataTable dt.Columns.Add ("Nom") dt.Columns.Add ("Cognom") dt.Columns.Add ("Telèfon") dt.Columns.Add ("Localitat") Dim dr As DataRow = dt.NewRow dr ("Nom") = "Joan" dr ("Cognom") = "Perez" dr ("Telèfon") = "4587-9546" dr ("Localitat") = "Morón" dt.Rows.Add (dr) dr = dt.NewRow dr ("Nom") = "Marcelo" dr ("Cognom") = "Roldán" dr ("Telèfon") = "7415-8945" dr ("Localitat") = "Morón" dt.Rows.Add (dr) dr = dt.NewRow dr ("Nom") = "Javier" dr ("Cognom") = "Martinez" dr ("Telèfon") = "4567-9654" dr ("Localitat") = "Castelar" dt.Rows.Add (dr) dr = dt.NewRow dr ("Nom") = "Estevan" dr ("Cognom") = "Vazquez" dr ("Telèfon") = "9452-4515" dr ("Localitat") = "Castelar" dt.Rows.Add (dr) ListView1.FullRowSelect = True ListView1.MultiSelect = False Dim grupoActual As String = String.Empty Dim g As New ListViewGroup For Each r As DataRow In dt.Rows If r ("Localitat"). ToString <> grupoActual Then g = New ListViewGroup (r ("Localitat"). ToString) grupoActual = r ("Localitat"). ToString ListView1.Groups.Add (g) End If Dim item As New ListViewItem ("") item.SubItems.Add (r ("Nom"). ToString) item.SubItems.Add (r ("Cognom"). ToString) item.SubItems.Add (r ("Telèfon"). ToString) item.Group = g ListView1.Items.Add (item) Next
Bé, les primeres línies es refereixen a la creació del DataTable i l'ompliment de dades i sobre això no faré comentaris. Nos en la manera d'omplir el listview.
Primer creo un For each per recórrer tots els registres de la taula que tinc en memòria. Després crec una variable de text (grupoActual) per guardar el nom del grup (l'últim que he afegit al listview) i també crec un objecte ListViewGroup (g). El primer que faig en començar a recórrer els registres és assignar la localitat (que és el camp que vull que funcioni com a grup) al listview1 i guardo aquesta dada en la variable grupoActual per a futures comparacions. A continuació càrrec un ListViewItem com sempre a diferència que li va indicar que aquest item pertany al grup "g", va afegir l'ítem al ListView1 i llest. En passar per la resta registres realitzarà la comparació i només crearà un nou grup quan la localitat canviï.
El resultat es veurà així:

Ara perquè tot es vegi més bonic, recomano crear una imatge per al fons. Crec que ja vaig comentar que prefereixo PhotoShop, però pots utilitzar qualsevol editor d'imatges per crear un JPG per utilitzar de fons. Tingues en compte que no ha de tenir colors molt forts perquè sinó es difilcultará la lectura de les dades.
Aquí et deixo una la imatge que faig servir en l'exemple:
Per usar simplement des de les propietats del listview, busca la propietat BackgroundImage i afegeix aquí la imatge tal com es mostra a continuació:

i també has de canviar la propietat BackgroundImageTiled a True i llest. Els mostro el resultat final:

Això és tot, espero que els serveixi.
Informació Bitacoras.com ...
Valora en Bitacoras.com: Com ja els vaig dir diverses vegades, el listview és un dels controls que més ús a l'hora de desenvolupar una aplicació en visual basic. Net. Avui vull mostrar una forma de treure-li més profit a aquest control ia més va deixar ...
Exelente mostra d'un altre tipus d'ús del listview.
la pregunta meva i he buscat per tot costat abans de preguntar és com fer possible publicar aquell listview agrupat.
gràcies
Hola, que tal, la meva pregunta és ...
¿I com se li fa per recórrer el listview grup per grup?
Hola, volia saber com es fa per esborrar un element seleccionat d'un listview.
gràcies.
aquesta molt bo l'exemple, jo ho estic posant en pràctica però tinc un problema per exemple: els meus grups són usuari i mòdul.
La meva pregunta és Com mostro el segon grup?
Per exemple en el teu exemple vós mostras item.group = g
¿I si també vull mostrar un grup ha la columna dels subitems?
O sigui que em mostri usuari (grup), mòdul (en un altre grup) i després la resta.
T'agraeixo el teu temps i una salutació.
com puc connectar el listview amb acces ¿?
perquè em mostro les dades de la bd en cada columna corresponent
En l'última línia = ListView1.Items.Add (item) em dóna el següent error:
No es pot afegir o inserir l'element "en més d'un lloc. Ha de treure'l de la seva ubicació actual o clonar.
Nom del paràmetre: item.
Estic provant en. Net 2008, perquè serà aquest error??
Disculpa jo ho probe en vb.NET 2008 i no em funciona.
Federico: quan vaig realitzar aquest post, els exemples els vaig fer usant visual studio 2008 i funcionen. T'aconsello que ho tornis a intentar prestant atenció als passos a seguir.
Sort.
bons dies, salutacions! volia saber com faria per agrupar cel · les amb el listview, ja que aquest control no posseeix la propietat merge. Esperant haver-me fet explicar.
=)
Hola bona aportació gràcies em va servir de molt,
però voldria saber o em podries ajudar a ordenar cada grup per poder implementar-lo en el projecte que estic desenvolupant gràcies
per endavant gràcies