Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

zephirus

Adicionar dados a coluna específica de uma listview

Mensagens Recomendadas

zephirus    0
zephirus

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"))

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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 ;)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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")

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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ª

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

Vê o exemplo que o ribeiro55 te mostrou ;)

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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))

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zephirus    0
zephirus

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade