Ir para conteúdo
Fórum Script Brasil
  • 0

Listview Com Link


alexandremanowar

Pergunta

E aí pessoal!

Fiz um ListView em um winform e ele esta listando as informações do meu banco de dados, porém eu fiz para ele listar apenas dois itens do meu banco de dados. Abaixo do ListView eu tenho alguns lables. A idéia é a seguinte quando o usuário clicar no ListView o restante da informção da linha que ele clicou vai aparecer nos labels. A tabela do banco de dados tem uma linha de chave primária chamada codigo. Não sei se é assim que vai funcionar mas acredito que o link no ListView vai jogar a variável com o valor do codigo e a partir daí eu faço uma consulta.

Como eu faço para o meu ListView funcionar como um link?

O meu código do listView é o seguinte:

Dim consulta As New SqlCommand("select * from ocorrencia order by cont", sqlcon)
        Dim da As New SqlDataAdapter(consulta)
        Dim ds As New DataSet
        da.Fill(ds)

        listaocorrencia.View = View.Details
        Dim coluna(2) As ColumnHeader
        coluna(0) = New ColumnHeader
        coluna(0).Text = "DATA"
        listaocorrencia.Columns.Add("DATA", 90, HorizontalAlignment.Left)
        listaocorrencia.Columns.Add("DESCRIÇÃO", 700, HorizontalAlignment.Left)

        Dim item As ListViewItem
        Dim registro, data
        For Each registro In ds.Tables(0).Rows
            ''lista.Items.Add(registro("nome"))
            data = registro("dias") & "-" & registro("mess") & "-" & registro("anos")
            item = listaocorrencia.Items.Add(data)
            item.SubItems.Add(registro("descricao"))

        Next

Alguém pode me ajudar?

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

E aí Graymalkin beleza!

Cara consegui fazer o esquema funcionou legal. Valeu a dica.

Porém ficou um problema que é o seguinte. Quando eu clico na opção consulta ele enche o ListView, porém se eu clicar no botão consulta denovo ele ao invés de limpar o listview e exibir os novos dados ele ajunta os novos dados com os que já estavam no listview. Eu preciso que quando eu clicar no botão consulta ele limpe o listview e exiba os novos dados. Como eu faço isso?

Jé tente usar ListView.Clear e outros comandos do tipo mas nada funcionou.

Olha como esta o meu códido:

 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Label2.Visible = False
        Panel2.Visible = True
        listaocorrencia.Visible = True
        Label7.Visible = False
        ComboBox1.Visible = False
        TextBox3.Visible = False
        Button3.Visible = False
        Dim mês = ComboBox1.SelectedItem
        Dim consulta As New SqlCommand("select * from ocorrencia where mess='" & Trim(mês) & "' and anos=" & Trim(TextBox3.Text) & "  order by cont", sqlcon)
        Dim da As New SqlDataAdapter(consulta)
        Dim ds As New DataSet
        da.Fill(ds)

        listaocorrencia.View = View.Details
        Dim coluna(5) As ColumnHeader
        coluna(0) = New ColumnHeader
        coluna(0).Text = "DATA"
        listaocorrencia.Columns.Add("ÍNDICE", 60, HorizontalAlignment.Center)
        listaocorrencia.Columns.Add("DIA", 40, HorizontalAlignment.Center)
        listaocorrencia.Columns.Add("HORA", 50, HorizontalAlignment.Center)
        listaocorrencia.Columns.Add("DESCRIÇÃO", 470, HorizontalAlignment.Left)
        listaocorrencia.Columns.Add("IMPRIMIR", 80, HorizontalAlignment.Center)

        Dim item As ListViewItem
        Dim registro, data
        For Each registro In ds.Tables(0).Rows
            data = registro("cont")
            item = listaocorrencia.Items.Add(data)
            item.SubItems.Add(registro("dias"))
            item.SubItems.Add(registro("horas") & ":" & registro("minutos"))
            item.SubItems.Add(registro("descricao"))
        Next
        


    End Sub

Esse é o código do listview o outro á apenas o botão que exibi o lisview ou seja o botão consulta.

Desde já agradeço a ajuda

Link para o comentário
Compartilhar em outros sites

  • 0

E aí Graymalkin beleza!

Cara consegui fazer o esquema funcionou legal. Valeu a dica.

Porém ficou um problema que é o seguinte. Quando eu clico na opção consulta ele enche o ListView, porém se eu clicar no botão consulta denovo ele ao invés de limpar o listview e exibir os novos dados ele ajunta os novos dados com os que já estavam no listview. Eu preciso que quando eu clicar no botão consulta ele limpe o listview e exiba os novos dados. Como eu faço isso?

Jé tente usar ListView.Clear e outros comandos do tipo mas nada funcionou.

Como são os itens da ListView que você quer limpar (Clear) você deve fazer:

NOMEDALISTVIEW.Items.Clear()

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Então eu já fiz isso, ele limpou a informação mas repetiu as colunas na frente sem os dados vazias ficou assim o resultado:

índice dia hora descricao

(conteúdo)

Essas são as colunas com primeira vez que eu clico. Aí eu uso esse comando e quando eu clico no botão consulta fica da seguinte forma:

índice dia hora descricao índice dia hora descricao

(conteúdo) (repetiu porém sem conteúdo)

Porque esta acontecendo isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Ah sim, realmente. Isso porque você está mandando ele colocar novas colunas. Você teria que ou remover as existentes ou então, *de preferência*, inserí-las só uma vez (só quando o form é aberto, por exemplo).

Para remover as colunas a idéia é a mesma dos itens:

NOMEDALISTVIEW.Columns.Clear()

Sendo que não existe necessidade de você ficar removendo e colocando as colunas quando for mudar os dados (basta utilizar as que já estão lá, que foram colocadas previamente).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi cara e funcionou legal. Usando o esquema de remover coluna. Porém você disse que eu preciso inserir as colunas apenas uma vez. Não entenfi sendo que toda a vez que ele clica no botão consulta tem que exibir uma nova listagem. Então acredito que o jeito é limpar e inseir outra vez!

Você poderia corrigir meu pensamento?

Valeu pela força

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi cara e funcionou legal. Usando o esquema de remover coluna. Porém você disse que eu preciso inserir as colunas apenas uma vez. Não entenfi sendo que toda a vez que ele clica no botão consulta tem que exibir uma nova listagem. Então acredito que o jeito é limpar e inseir outra vez!

Você poderia corrigir meu pensamento?

Mas, essas listagens tem sempre as mesmas colunas, certo? Então, você só precisaria fazer...

        listaocorrencia.View = View.Details
        Dim coluna(5) As ColumnHeader
        coluna(0) = New ColumnHeader
        coluna(0).Text = "DATA"
        listaocorrencia.Columns.Add("ÍNDICE", 60, HorizontalAlignment.Center)
        listaocorrencia.Columns.Add("DIA", 40, HorizontalAlignment.Center)
        listaocorrencia.Columns.Add("HORA", 50, HorizontalAlignment.Center)
        listaocorrencia.Columns.Add("DESCRIÇÃO", 470, HorizontalAlignment.Left)
        listaocorrencia.Columns.Add("IMPRIMIR", 80, HorizontalAlignment.Center)

... no evento Load do form, por exemplo, e as colunas ficaram na ListView eternamente (enquanto o form estivesse aberto). As colunas de uma listview são *independentes* dos itens dela, e só existe a necessidade de colocá-las uma vez.

Se houvesse algum tipo de variação nestas colunas (uma vez uma determinada aparece e outra vez não), aí tudo bem em colocá-las todas as vezes, mas este não é o caso. Então, você só vai estar desperdiçando processamento repetindo uma coisa que só precisa realmente ser feita uma vez.

Sacou? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi cara. Dessa forma as colunas sempre estarão ali. E com isso o código fica mais rápido e eu economizo processamento, agora ficou claro.

Muito obrigado pela explicação, o melhor de tudo é quando o assunto fica bem explicado.

Até a próxima

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...