Creación de grupos nun ListView (ListViewGroup)

Como dixo varias veces, o control listview é un dos máis uso ao desenvolver unha aplicación en Visual Basic. Net

Hoxe quero poñer unha forma de obter máis fóra dese control e tamén deixar moito máis atractivo, creando grupos eo uso dunha imaxe de fondo.

por exemplo, que necesitamos: unha forma e un listview. Debe ser semellante a seguinte imaxe:

Para ver os resultados que necesitamos de datos, e por iso eu creei un DataTable na memoria e encheu o con catro rexistros. Os campos son: Nome, Apelidos, Teléfono e localización.

Quero mostrar neste exemplo dunha lista de persoas cos seus nomes e números de teléfono agrupados por localización. Primeiro analizar o código a seguir se quere probalo para ver como funciona e entón eu vou explicar algunhas cousas.

 Dt Din DataTable
 dt.Columns.Add ("O")
 dt.Columns.Add ("O")
 dt.Columns.Add ("Teléfono")
 dt.Columns.Add ("Cidade")

 Din dr As DataRow = dt.NewRow

 dr ("Nome") = "Xosé"
 dr ("Nome") = "Smith"
 dr ("Teléfono") = "4587-9546"
 dr ("Location") = "Moron"
 dt.Rows.Add (dr)

 dr = dt.NewRow
 dr ("Nome") = "Marcelo"
 dr ("Nome") = "Roland"
 dr ("Teléfono") = "7415-8945"
 dr ("Location") = "Moron"
 dt.Rows.Add (dr)

 dr = dt.NewRow

 dr ("Nome") = "Javier"
 dr ("Nome") = "Martínez"
 dr ("Teléfono") = "4567-9654"
 dr ("Location") = "Castelar"
 dt.Rows.Add (dr)

 dr = dt.NewRow

 dr ("Nome") = "Estevan"
 dr ("Nome") = "Vázquez"
 dr ("Teléfono") = "9452-4515"
 dr ("Location") = "Castelar"
 dt.Rows.Add (dr)

 ListView1.FullRowSelect = True
 ListView1.MultiSelect = False

 Din As String = String.Empty grupoActual

 G Din ListViewGroup

 Para cada R Como DataRow En dt.Rows

 Se r ("Cidade"). ToString <> A continuación, grupoActual
 Nova ListViewGroup g = (r ToString ("City").)
 grupoActual = r ToString ("City").
 ListView1.Groups.Add (g)
 End If

 Elemento de Din ListViewItem ("")
 item.SubItems.Add (r ("Nome"). ToString)
 item.SubItems.Add (r ("Last Name"). ToString)
 item.SubItems.Add (r ("Teléfono"). ToString)
 item.Group = g

 ListView1.Items.Add (elemento)
 Seguinte

Ben, as primeiras liñas refírense a creación do DataTable e recheo de datos e non vai comentar. Concéntrase en como encher o listview.

Primeiro eu creo un bucle for Each través de todos os rexistros na táboa que teño na memoria. Así que crear unha variable de texto (grupoActual) para salvar o nome do grupo (o último que engade o listview) e eu tamén creo que un ListViewGroup obxecto (g). O primeiro que podo facer para comezar a baixar os rexistros e asignar o sitio web (que é o campo que quero traballar como un grupo) para ListView1 e manter eses datos no grupoActual variable para futuras comparacións. Entón, cobrar unha ListViewItem como sempre ao contrario do que indicaban que este elemento pertence ao grupo "g", engadiu o elemento para ListView1 e listo. Pasando por outros rexistros e realizar a comparación só crear un novo grupo cando os cambios de cidade.

O resultado será coma:

Agora, para todo parecer máis agradable, eu recomendo crear unha imaxe para o fondo. Eu creo que eu mencionei que eu prefiro o Photoshop, pero pode empregar calquera editor de imaxes para crear un JPG para o seu uso en segundo plano. Nótese que as cores que non debe ser moi forte, porque é difilcultará lectura dos datos.

Aquí deixo unha imaxe que eu uso este exemplo:

Para usalo só a partir das propiedades do listview, atopar o BackgroundImage e, a continuación, engadir unha imaxe como o seguinte:

e tamén ten que cambiar o propietario para BackgroundImageTiled verdade e listo. Eu mostro o resultado final:

É iso, espero que serven.

12 Responses to "Creación de grupos nun ListView (ListViewGroup)"

  1. Información Bitacoras.com ...

    Taxa en Bitacoras.com: Como dixen varias veces, o control listview é un dos máis uso ao desenvolver unha aplicación en Visual Basic Net. Hoxe quero poñer unha forma de obter máis no control e tamén Dej ...

  2. César dixo:

    Excelente exemplo de outro tipo de uso do listview.

    mia pregunta e eu procurei en todos os lugares antes de preguntar é como activar cluster imprimir esta listview.

    grazas

  3. Emilio Rafael García Ríos di:

    Ola, que tal a miña pregunta é ...
    E como fai para andar no grupo listview polo grupo?

  4. anónimo di:

    Ola, eu quería saber como facer para eliminar un elemento seleccionado nun listview.
    Grazas.

  5. Alejandro di:

    Neste exemplo moi bo, eu estou poñendo en práctica, pero eu teño un problema, por exemplo: os meus grupos son módulo de usuario.
    A miña pregunta é: Como mostro o segundo grupo de usuarios?
    Por exemplo, no seu exemplo que Vostede engada o que item.group = g
    E se eu tamén quero mostrar un grupo de h na columna de subitens?
    Oso me amosar usuario (grupo), módulo (noutro grupo) e despois o resto.
    Eu aprecio o seu tempo e os mellores cumprimento.

  6. Christian di:

    como podo conectar o listview con acceso ¿?
    Eu mostro que os datos en cada columna BD

  7. Li di:

    Na última liña = listView1.Items.Add (elemento) eu recibín o seguinte erro:

    Non se pode engadir ou inserir o elemento "en máis dun sitio. Debe eliminar-lo da súa situación actual ou cloná-lo.
    Nome do parámetro: elemento.

    Estou probando el. Net 2008, pois que o erro é?

  8. Federico di:

    Sentímolo eu vb.NET sonda en 2008 e non funciona.

    • Eliseu di:

      Federico: Cando eu fixen este post, os exemplos que eu fixen a usar o Visual Studio 2008 e funcionan. Eu aconsellamos a tentar de novo prestando atención aos pasos.

      Sorte.

  9. Jorge di:

    bo día, Saúdos! quería saber como as células do grupo faría o listview, e que ese control non fundir propiedade. Esperando para facer-me explicar.

    =)

  10. Carlos di:

    Ola boa contribución por me serviu ben,
    pero eu sabería ou podería me axudar a clasificar cada grupo, co fin de implementar o proxecto que desenvolveu a través de
    previamente a través

  11. Sergio Hernández dixo:

    Excelente traballo, copiar e pegar. Funciona moi ben.

    Cumprimento e grazas

Comentar