Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

glicosenaveia

instanciar conexão POO, prenchendo listview

Recommended Posts

Queria saber como preencho um listview usando uma conexão orientada a objetos, um colega me passou os objetos abaixo, só falta instanciar, mas eu não sei fazer isso, eu estudo C# e fazia conexões não orientadas a objetos, agora com essa mudança de linguagem eu to meio perdido

 

Eu tenho muito trampo nesse projeto e pegando esse conceito fica mais fácil pra mim começar a ter uma noção pra seguir

 

Quem puder ajudar fico agradecido...

 

 

----------------------------

''FrmModelo.vb

----------------------------

 

'' É o que preciso: tenho um listview e preciso prenche-lo com todos as categorias (código da categoria e descrição)

 

 

 

----------------------------

''ConnAcess.vb

----------------------------

 

Imports System.Data.OleDb

Imports Structs

Public Class ConnAccess

	Private _file As String

	Private _Lng As eLanguage
	Private _StrLng As String

	Private oConn As OleDbConnection
	Private oConnect As String

Public Sub New(ByVal pFile As String, ByVal pLng As eLanguage)

		_file = pFile

		_Lng = pLng

		_StrLng = Config.StringLanguage(pLng)

		oConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _file & ";User ID=Admin;Password="
		oConn = New OleDbConnection(oConnect)
		oConn.Open()

	End Sub

Public Function SelectCategoria() As List(Of Categoria)

		Dim retLst As New List(Of Categoria)

		Dim oComm As OleDbCommand
		Dim oData As OleDbDataAdapter
		Dim resultSet As New DataSet
		Dim oQuery As String

		oQuery = "SELECT COD_VT101, DES_" & _StrLng & _
				 "_VT101 AS DES_VT101 FROM VT101_CAT"

		oComm = New OleDbCommand(oQuery, oConn)
		oData = New OleDbDataAdapter(oQuery, oConn)

		Try

			oData.Fill(resultSet, "VT101_CAT")

		Catch ex As OleDb.OleDbException
		Catch ex As Exception

			MsgBox(ex.Message & vbCrLf & ex.StackTrace)

		End Try

		For Each row As DataRow In resultSet.Tables(0).Rows

			retLst.Add(New Categoria(row("COD_VT101"), row("DES_VT101")))

		Next

		Return retLst

	End Function

------------------

''Categoria.vb

------------------

Public Class Categoria

	Public Codigo As String
	Public Nome As String

	Public Sub New(ByVal pCodigo As String, ByVal pNome As String)

		Codigo = pCodigo
		Nome = pNome

	End Sub

End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não consegui, eu tentei algo como ListView1.Items.Add("Data Source="_conn.SelectCategoria)

 

mas nada, estou meio perdido, se não fosse orientado a objetos eu saberia fazer com um for até dataset.tables.rows.count-1, aí ia adicionado os itens com Items.Add

 

Mas dessa forma eu não to conseguindo nem saber se a conexão já está aberta no meu frmModelo

 

Pra quem sabe se precisa instanciar ou não, e como fazer isso, creio que em menos de 5 minutos faz esse código, e eu estou perdendo o dia todo só nisso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu preciso pegar os dados da tabela VT101_CAT e prencher um listview, só isso. Mas eu não consigo fazer porque os códigos de conexão não estão no frmModelo, estão na classe ConnAccess, e eu nunca trabalhei dessa forma, com os códigos de conexão não estando no formulário

 

Eu to quebrando a cabeça pra tentar descobrir, mas é difícil, creio que é mais questão de conhecimento do que de lógica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu método SelectCategoria ja faz toda a parte de acesso a dados e retorna sua lista.

Tente algo do tipo:

 

Dim cn as New ConnAccess

ListBox.DataSource = cn.SelectCategoria()
ListBox.DataBind

Fiz de cabeça, é isso ou algo parecido, mas o principal é que o método SelectCategoria ja retorna sua lista pronta, como eu disse basta associa-lo como seu DataSource.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu consegui:

 

Private _conn As ConnAccess
Private _lstCat As List(Of Categoria)

_lstCat = _conn.SelectCategoria
Dim lvi As ListViewItem = Me.ListView1.Items.Add(_lstCat.Count)

Tipo esse código retornou o valor certo do Count que é 9, pois eu tenho 10 registros na tabela, já é um bom começo...

 

Pelo que me parece, agora eu tenho no meu form uma lista de categoria (_lstCat) que tem 2 campos: "COD_VT101" e "DES_VT101" (código e descrição respectivamente)

 

 

 

Agora Queria saber como eu faço pra inserir os dados ao invés do índice

 

Só pra lembrar eu to trabalhando com um ListView

 

vlws

Compartilhar este post


Link para o post
Compartilhar em outros sites

O código é este que o quintelab postou por último.

Você só precisa lembrar de dizer ao listbox qual campo é o código e qual é a descrição.

Basta colocar estes atributos no listbox:

DataTextField="Nome" DataValueField="Codigo"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a todos que vem me ajudando,

e consegui preencher assim:

 

_lstCat = _conn.SelectCategoria()

For i As Integer = 0 To _lstCat.Count - 1
Dim lvi As ListViewItem = Me.LswCategoria.Items.Add(_lstCat(i).Codigo)   lvi.SubItems.Add(_lstCat(i).Nome)
Next

 

Eu tenho outra dúvida agora, como eu faço pra pegar o índice do item selecionado?

Eu tentei isso: LswCategoria.SelectedIndices(0) e joguei numa textbox pra ver o resultado

 

O primeiro item selecionado funciona, retorna o índice correto, mas quando eu tento selecionar outro item trava o programa

 

Alguém sabe como pego esse indice???

 

Grato

 

vlws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah e tbm preciso saber pegar o indice de um node em um treeview, e mostra uma imagem toda vez que um node for selecionado

Como posso fazer???

 

vlws

Abra outro tópico para esta sua dúvida, se não irá vira bagunça no seu tópico.

 

Referente sua dúvida inicial: http://www.macoratti.net/vbn_lvw1.htm

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.