• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

passado

TreeView - Mostrar dados agrupados

7 mensagens neste tópico

Boas pessoal eu queria saber se numa treeview consigo mostrar os dados de um certo modo.

Fazendo uma pesquisa por um determinado nome queria queria que na treeview aparecesse todos os registos ligados a esse nome, mais ou menos assim

imaginemos que na pesquisa esta "L"

Luis

  - Maquina 1

  - Maquina 2

Lurdes

  - Maquina 3

  - Maquina 4

Fizme entender? isso podesse fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Poder podes.. em programação faz se possível o impossível.. lol

"..mostrar os dados.."

Tens os dados em SQL?

Se sim.. é mais simples.. na condição do query poens algo tipo:

SELECT DISTINCT nome, maquina WHERE nome LIKE '%L%'

Para adicionares os items ao TreeView fazes algo tipo:

'Prepara o boject
nome_do_treeview.BeginUpdate()
'Percores todos os nomes
For Each Nome As String In colecao_de_nome
'Adicionas o node
 Dim oNode As TreeNode = nome_do_treeview.Nodes.Add(Nome)
 'Percores todas as maquinas..
 For Each Maquina As String In colecao_de_maquinas(Nome)
	'Adicionas o subnode
	oNode.Nodes.Add(Maquina)
 Next					 
Next
'Finaliza o object
nome_do_treeview.EndUpdate()

Basicamente terás de fazer algo tipo isso..

Qualquer duvida apita :thumbsup:

Comp.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mesmo que não tenhas os dados em SQL, como o fLaSh_PT perguntou, podes perfeitamente correr as colecções de nodes para construír um pequeno cache onde filtras o que tens de filtrar e voltas a popular a TreeView.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O feito do treeview vai ser substituir duas listbox, ou seija eu actualmente tenho uma listbox onde aparecem os clientes, depois ao clicar no cliente na segunda listbox aparece as maquinas correspondentes, acham que o treeview faz bem essa função, depois ao clicar na maquina quero que seijam carregados dados para um formulário

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas, pesquisando pela net fui ter a do nosso amigo macoratti e encontrei um codigo o qual resolvi alterar

Dim cn As New SqlConnection(Gestão_de_Alugueres.My.Settings.aluguerConnectionString)
            'Adaptadores para categorias e produtos
            Dim daClientes As SqlDataAdapter
            Dim daAlugueres As SqlDataAdapter
            'O DataSet
            Dim ds As DataSet
            'Um DataView para os produtos
            Dim dvAlugueres As DataView

            'define os Adaptadores para categorias e produtos
            daClientes = New SqlDataAdapter("Select id, nome from Clientes", cn)
            daAlugueres = New SqlDataAdapter("Select * from Aluguer where activo=1", cn)
            'define o DataSet
            ds = New DataSet
            'preencher o DataSet com categorias e produtos
            Try
                daClientes.Fill(ds, "Clientes")
                daAlugueres.Fill(ds, "Aluguer")
            Catch ex As Exception
                MsgBox(ex.Message)
                Exit Sub
            End Try
            'definir o dataview para produtos
            dvAlugueres = ds.Tables("Aluguer").DefaultView
            'TreeView - define o No Raíz
            TreeView1.Nodes.Add("Clientes")
            'Preenchendo o TreeView
            Dim dr As DataRow
            Dim nodo As TreeNode
            'percorre cada linha na tabela categorias 
            For Each dr In ds.Tables("Clientes").Rows
                'preencher todas as categorias com o nome -  CategoryName
                nodo = TreeView1.Nodes(0).Nodes.Add(dr("nome"))
                'preencher os produtos para cada categoria filtrando por codigo de categoria
                dvAlugueres.RowFilter = "ncliente = " & dr("id")
                'preenche os nos do treeview com o nome do produto para cada categoria
                Dim i As Integer
                For i = 0 To dvAlugueres.Count - 1
                    nodo.Nodes.Add(dvAlugueres.Item(i).Row("nmaquina"))
                Next
            Next

Prendo-me apenas com duas duvidas:

1- Os dado estao a aparecer assim:

Clientes

  Luis

    1

    2

  Manuel

    3

Eu nao posso por logo a aparecer os nomes?

2 - Como faço para em vez de 1, aparecer o nome a que corresponde 1, e depois ao clicar nesse nome ele assumir o valor 1, para poder carregar o formulário

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não se esqueçam da propriedade TAG, que serve mesmo para guardar informações como o valor por detrás de um texto, ou neste caso, o ID.

Nodes têm TAG.

Agora é que me lembrei:

Analisa o #22, #23 e o #24 deste artigo e vê lá se também não fica bonito.

É apenas uma sugestão para não te sentires vinculado à treeview.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem achei interessante o controlo listview, nunca usei, tambem so agora vou no meu segundo projecto serio, e so agora completo cerca de meio ano de estudo de programaçao xD

Andei a ver e mais uma vez fui ter com o macoratti onde vi este artigo

Usando o Controle Listview

Na vossa opiniao, qual se adequa mais as minhas necessidades, eu o treeview teho tudo construido so me falta mesmo descobrir a tal situaçao de mostrar texto e ao seleccionar assumir um valor e carregar o formulário

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora