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

zephirus

Adicionar dados a coluna específica de uma listview

20 mensagens neste tópico

Olá,

Tenho uma listview com duas colunas. Posso ter, ou não, dados para introduzir na lista. No caso de ter, quero adicionar duas palavras, uma na coluna 1 e outra na coluna 2. Como é que faço isto?

Neste momento o meu código está assim mas isto adiciona um item apenas à primeira coluna e eu queria adicionar a parte "Label" à primeira e a parte "Part" à segunda coluna.

While reader.Read()
listView1.Items.Add(reader.Item("Label") & " - " & reader.Item("PartNumber"))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê este artigo: ListViews e 36 utilidades directas em especial o ponto #4 - Adicionar itens

Para já agradeço o link. Vai ficar nos bookmarks. Quanto à minha questão inicial continuo sem conseguir fazer o que quero. O ponto 4 mostra como criar dinâmicamente mas eu já tenho a minha listview e as colunas definidas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existe uma coisa que é o ListViewItem (para a primeira coluna) e o ListViewSubItem (para as restantes colunas). O que tens de fazer é como o exemplo mostra ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Existe uma coisa que é o ListViewItem (para a primeira coluna) e o ListViewSubItem (para as restantes colunas). O que tens de fazer é como o exemplo mostra ;)

Mas isto não está a aceitar nenhum listviewsubitem... Sinceramente não percebo onde estou a errar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No #5 do artigo, explica como te podes referenciar a um valor.

Onde lês:

LV.SelectedItems(0).SubItems("Idade").Text

Com referência, tens acesso à colecção que contém os subitems. Por exemplo assim:

LV.SelectedItems(0).SubItems.Add("A tal palavra")
LV.SelectedItems(0).SubItems.Add("A tal segunda palavra")

Se quiseres afectar uma coluna de uma forma não sequencial, terás de aldrabar pois não me recordo se a coleção subitems tem algum display index ou coisa parecida (por acaso tenho de ir coscuvilhar isso):

LV.SelectedItems(0).SubItems.Add("")
LV.SelectedItems(0).SubItems.Add("A tal segunda palavra")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mostra lá o código!

Estou a usar o teu código para fazer a selecção de dados de uma base de dados:

http://vbtuga.blogspot.com/2008/04/vbnet-gesto-de-dados-em-sql-server_16.html

As únicas diferenças é que estou a ir buscar dois items a uma tabela e não um. Depois cá para o fim tenho isto:

If reader.HasRows Then

    ' Executa um ciclo nas linhas existentes mostrando o campo “username”
While reader.Read()
	listView1.Items.Add(reader.Item("Label") & " - " & reader.Item("PartNumber"))
End While

A minha listview já tem duas colunas. Esse código acima era só para testar porque o que eu queria era o Label na primeira coluna e o PartNumber na 2ª

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê o exemplo que o ribeiro55 te mostrou ;)

No meu blog também tens alguns exemplos com listviews, mas este exemplo está simples!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê o exemplo que o ribeiro55 te mostrou ;)

No meu blog também tens alguns exemplos com listviews, mas este exemplo está simples!

Epá, agradeço a vossa paciência mas eu também já estou todo trocado. É que a minha listview está vazia e um número indeterminado de items vão ser adicionados. Nesse exemplo é usado o index 0 para o item mas eu no meu caso não o posso usar. Estou mesmo a dar em maluco com isto e se calhar até é fácil.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes usar o artigo #5 em pleno se quando adicionares os items, os já adiciones com os dois subitems vazios extra.

Assim eles já existem e não precisas de recorrer a maroscas.

Estuda o #4 para saberes como adicionar os itens correctamente para que os seus elementos fiquem facilmente acessíveis.

Quanto a teres de tirar duas palavras de uma frase, aproveita o facto de usares o "-" para concatenares a string.

Exemplo:

            Dim Frase As String = "Falar é fácil - Copiar código é ainda mais"
            Dim P() As String = Split(Frase, " - ")
            MsgBox(P(0))
            MsgBox(P(1))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mais simples que isto não sei:

        Dim item As New ListViewItem
        item.Text = "Coluna 1"
        item.SubItems.Add("Coluna 2")
        Me.ListView1.Items.Add(item)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ok, fiz assim e já deu:

		Dim LVI As New ListViewItem

	Dim SLVI1 As New ListViewItem.ListViewSubItem
        LVI.Name = "Label"
        LVI.Text = reader.Item("Label")

        SLVI1.Name = "Part Number"
        SLVI1.Text = reader.Item("PartNumber")

        LVI.SubItems.Add(SLVI1)

        listView1.Items.Add(LVI)

O que eu não percebo e pensei que desse era para definir o subitem com algo do género:

listView1.Items.Item(index).Subitems(0).Text = ....

Aparentemente não dá.

Muito obrigado aos dois pela ajuda.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dá, se já existir.

Se não existir, não dá.

E o índice 0 dos subitems é o próprio item. O que é engraçado. :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Infelizmente tive de voltar a abrir este tópico. Estou a implementar parte deste código mas em compact framework para por no pda e estou a tentar usar uma listview. Infelizmente na parte do código de adicionar items à listview, obtenho os seguinte erros:

'Name' não é um membro de 'System.Windows.Forms.ListViewItem'. (BC30456) - D:\PT104246\My Documents\SharpDevelop Projects\pda\pda\MainForm.vb:40

'Name' não é um membro de 'System.Windows.Forms.ListViewItem.ListViewSubItem'. (BC30456) - D:\PT104246\My Documents\SharpDevelop Projects\pda\pda\MainForm.vb:42

respectivamente nas linhas de código:

lvi.Name = "Id"

slvi1.Name = "Label"

O código todo é o seguinte:

Dim lvi As New ListViewItem
Dim slvi1 As New ListViewItem.ListViewSubItem
lvi.Name = "Id"
lvi.Text = SQLreader("id")		 
slvi1.Name = "Label"
slvi1.Text = SQLreader("label")
lvi.SubItems.Add(slvi1)
listView1.Items.Add(lvi)

isto é muito estranho pois o item da listview tem de ter uma propriedade 'name'. O que é que está aqui a falhar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tenho experiência com a compact framework, mas de facto esses objectos não precisam necessáriamente de nome.

Repara que no exemplo do jpaulino o nome não é usado.

De facto, se voltares ao #4 do artigo has-de reparar na nota amarela que lá está :cheesygrin:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não tenho experiência com a compact framework, mas de facto esses objectos não precisam necessáriamente de nome.

Repara que no exemplo do jpaulino o nome não é usado.

De facto, se voltares ao #4 do artigo has-de reparar na nota amarela que lá está :cheesygrin:

Penso que já sei qual é o problema. É que eu tenho a minha listview em modo "details" (o único que me permite ter colunas) mas pelos visto isso não é compatível para o pda.

O erro é este:

'PerformLayout' não é um membro de 'pda.MainForm'. (BC30456)

Se de facto isto é verdade, que alternativas poderei usar para ter o mesmo tipo de control? Ou seja, uma lista com várias colunas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estou a usar o sharpdevelop para fazer o meu programa e verifiquei que no visualstudio já dá para adicionar os items às colunas. Se calhar vou optar por fazer isto no visualstudio mas mantenho a minha questão. Além da listview há outra maneira para fazer o que pretendo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se os SmartPhones não papam ListViews em modo details, a Microsoft não deixava isso pendurado e deve existir outro controlo do género para isso.

Sim, usa VS. Com as SDK instaladinhas tens logo simulações e tudo certinho direitinho em relação ao que funciona ou não.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se os SmartPhones não papam ListViews em modo details, a Microsoft não deixava isso pendurado e deve existir outro controlo do género para isso.

Sim, usa VS. Com as SDK instaladinhas tens logo simulações e tudo certinho direitinho em relação ao que funciona ou não.

Pois. No VS dá. Deve ser algum problema com o sharpdevelop que aproveito para dizer que sendo free é uma excelente ferramenta.

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