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

Valadas

[Resolvido] Listview

Recommended Posts

Valadas

Boas pessoal,

tenho um problema para ir buscar os dados à base de dados e preencher a listview nas respectivas colunas....

se me pudessem ajudar...

tenho o seguinte codigo:

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim db As New OleDbConnection(Gestao_Jogadores.My.Settings.ligacaobd)

       
        db.Open()

        
      
Dim comandosql = "Select Nome_jogador, Clube, Posicao from Perfil_Jogadores, Clubes where Nome_jogador like'" + TextBox1.Text + "%'"

        Dim cmd As New OleDbCommand(comandosql, db)

        Dim dtr As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

        With Me.ListView1

            .Columns.Add("Nome", 50, HorizontalAlignment.Left)

            .Columns.Add("Clube", 50, HorizontalAlignment.Left)

            .Columns.Add("Posicao", 50, HorizontalAlignment.Left)

            .FullRowSelect = True

            .GridLines = False

            .View = View.Details

        End With

        While dtr.Read()
            ListView1.Items.Add(dtr.Item(0))

        End While

        dtr.Close()
        db.Close()
end sub


RV

Share this post


Link to post
Share on other sites
Hellblazer

E dá algum erro? o que nao funciona?

tenta alterar aquele ciclo para algo do genero:

Dim itmX as ListViewItem
While dtr.Read()
         itmX=new ListViewItem()
         itmX.Text= dtr.GetValue(0).ToString()

         For i as Integer =1 To i = dtr.FieldCount - 1
            itmX.SubItems.Add(dtr.GetValue(i).ToString())
         Next
         ListView1.Items.Add(itmX);
End While

EDIT: lol adicionei o code e o geshi


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
jpaulino

Assim, e se estiver a funcionar, apenas te preenche a primeira coluna.

Tens de fazer mais ou menos isto:

Dim item As ListViewItem
While dtr.Read()

     item = New ListViewItem
     item.Text = dtr.Item(0)
     item.SubItems.Add(dtr.Item(1))
     item.SubItems.Add(dtr.Item(2))
     Me.ListView1.Items.Add(item)

End While

Share this post


Link to post
Share on other sites
Hellblazer

Obrigado, ficou resolvido!!!! :P

utilizei o código do jpaulino e deu!!

:) ainda bem

mas tem atenção.. a unica difrenca entre o meu codigo e o dele e que ele apenas conta com os 3 campos que tu tens seleccionados...

no meu codigo podes utilizar para qualquer select que ele vai listar todos os campos seleccionados :D

E nao te esquecas de por resolvido no nome do tópico.

Cumps


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
Valadas

:D ainda bem

mas tem atenção.. a unica difrenca entre o meu codigo e o dele e que ele apenas conta com os 3 campos que tu tens seleccionados...

no meu codigo podes utilizar para qualquer select que ele vai listar todos os campos seleccionados :P

E nao te esquecas de por resolvido no nome do tópico.

Cumps

sim so utilizei o dele porque era mais simples e como estou no inicio foi o que percebi melhor...

outra coisa, como faço para quando abrir o form da listview carregar todos os dados guardados na bd??


RV

Share this post


Link to post
Share on other sites
Hellblazer
outra coisa, como faço para quando abrir o form da listview carregar todos os dados guardados na bd??

Como assim? consegues especificar mais um pouco? nao estou a conseguir entender o que queres :S


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
Valadas

Como assim? consegues especificar mais um pouco? nao estou a conseguir entender o que queres :S

entao é assim, tenho uma form para pesquisa com a listview e ao abrir a form aparece vazia, e queria que aparecesse a listview ja com os dados da bd.... :S

se desse....


RV

Share this post


Link to post
Share on other sites
Hellblazer

entao basta colocares o codigo que tens no butao no Load do form :P

so que tens de retirar o filtro da textbox :D


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
Valadas

entao basta colocares o codigo que tens no butao no Load do form :D

so que tens de retirar o filtro da textbox :)

ja esta!! :P

obrigado.

ja agora nao sabe se da para clicar num registo na listview e abri-lo na respectiva form!?


RV

Share this post


Link to post
Share on other sites
Hellblazer

lolol o que queres abrir? :P


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
Hellblazer

Inseres isto antes do inicio da classe:

Imports System
Imports System.Windows.Forms
Imports System.Reflection

Depois crias estas duas funções:

Public Shared Function CreateObjectInstance(ByVal objectName As String) As Object
        Dim obj As Object

        Try
            If objectName.LastIndexOf(".") = -1 Then
                objectName = [Assembly].GetEntryAssembly.GetName.Name & "." & objectName
            End If

            obj = [Assembly].GetEntryAssembly.CreateInstance(objectName)

        Catch ex As Exception
            obj = Nothing
        End Try
        Return obj

    End Function

    Public Shared Function CreateForm(ByVal formName As String) As Form
        Return DirectCast(CreateObjectInstance(formName), Form)
    End Function

Depois para abrires o form que queres e facil basta saberes o nome do Form e fazes:

Dim frm As Form
frm = CreateForm("Nome_do_Form")
frm.ShowDialog()


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
Hellblazer

Dá erro na variavel frm, diz "declaration expected"... :S

Nao consigo reproduzir o teu erro...

Fizes-te tudo como eu disse ali? :S


There are two ways to write error-free programs; only the third one works.

Share this post


Link to post
Share on other sites
Valadas

Nao consigo reproduzir o teu erro...

Fizes-te tudo como eu disse ali? :S

sim sim fiz tudo exacto e o unico erro e aquele... a form a abrir é form2 e meti... :s


RV

Share this post


Link to post
Share on other sites
jpaulino

ja agora nao sabe se da para clicar num registo na listview e abri-lo na respectiva form!?

Tu na listview tens os nomes dos forms, é isso ?

Share this post


Link to post
Share on other sites
jpaulino

nao, nao tenho.. :s

Então o que queres abrir ? Tens o registo e queres mostrar os detalhes desse registo através de um novo form ?

Share this post


Link to post
Share on other sites
Valadas

Então o que queres abrir ? Tens o registo e queres mostrar os detalhes desse registo através de um novo form ?

sim.

eu tenho um form onde adiciono os registos, e outro form para fazer a pesquisa. Depois na pesquisa ao clicar no registo encontrado ir abrir o form onde o inseri... fiz-me entender? :s


RV

Share this post


Link to post
Share on other sites
jpaulino

Sim, entendi!

Tens duas formas de o fazer:

1 - Carregas na listview todos os campos (escondes os que não queres mostrar) que precisas mostrar posteriormente no form dos detalhes, e quando chamas o form, utilizas os dados escondidos na listview (nas colunas);

2 - Tens um ID (à vista ou escondido) e quando fazes duplo cick passas como parametros para o novo form, que vai buscar os dados à db e preencher os controlos;

Share this post


Link to post
Share on other sites
Valadas

Sim, entendi!

Tens duas formas de o fazer:

1 - Carregas na listview todos os campos (escondes os que não queres mostrar) que precisas mostrar posteriormente no form dos detalhes, e quando chamas o form, utilizas os dados escondidos na listview (nas colunas);

2 - Tens um ID (à vista ou escondido) e quando fazes duplo cick passas como parametros para o novo form, que vai buscar os dados à db e preencher os controlos;

nao entendi muito bem...


RV

Share this post


Link to post
Share on other sites
jpaulino

Vou tentar explicar melhor:

1 - Carregas na listview todos os campos que necessitas mostras depois nos detalhes. Escondes aqueles que não queres mostrar. Depois, quando fazes duplo-clique no item ou carregas num botão, abres o form e preenches os campos do novo form com a informação que está na coluna.

2 - Na lista tens o ID, nome, descrição, etc. Quando abres o novo form dizes que esse form vai mostrar informação do registo x (que é o ID) e o form carrega da base de dados essa informação.

Share this post


Link to post
Share on other sites
Luis Marques

Qual é o evento que se tem de utilizar para fazer duplo click num registo na listview?


LM

Share this post


Link to post
Share on other sites
jpaulino

Qual é o evento que se tem de utilizar para fazer duplo click num registo na listview?

ListView1.MouseDoubleClick

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.