AJUDA COM AS LIST(OF) E LISTVIEW

KURTGU 27/02/2017 14:44:28
#471955
ESTOU PREENCHENDO UMA LISTA, Estou obtendo o retorno corretamente. Abaixo as informações, não estou conseguindo jogar essa lista dentro de um listview em um aplicação windows form, tentei muitas coisas, achei a forma de jogar para um datable mais acho que não esta correto gostaria de saber se é possível jogar diretamente para o listview.

Meu retorno dos dados webservice


Como eu preencho a lista no webservice
 <WebMethod()> _
Public Function ListarPacientesCadastrados(ByVal Unidade As String) As List(Of DadosPaciente)
Try
Dim ListaPacientes As New List(Of DadosPaciente)
Conectar()
Dim query As String
query = ([Ô]Select * From tb_pacientes Where unidade_paciente= [ô][Ô] & Unidade & [Ô][ô][Ô])
myCMD = New MySqlCommand(query, myCON)
myDRR = myCMD.ExecuteReader()
Do While myDRR.Read
Dim Pacientes As New DadosPaciente
Pacientes.idpaciente = myDRR.Item([Ô]id[Ô])
Pacientes.nomepaciente = myDRR.Item([Ô]nome_paciente[Ô])
Pacientes.pacientecartaosus = myDRR.Item([Ô]cartao_sus[Ô])
Pacientes.pacientetel = myDRR.Item([Ô]numero_tel[Ô])
Pacientes.unidadepaciente = myDRR.Item([Ô]unidade_paciente[Ô])
Pacientes.unidadedestinopaciente = myDRR.Item([Ô]unidade_destino[Ô])
ListaPacientes.Add(Pacientes)
Loop
Return ListaPacientes
Catch ex As Exception
End Try

End Function
KURTGU 27/02/2017 20:58:52
#471969
up....

TUNUSAT 27/02/2017 23:20:14
#471977
KURTGU,

Achei um exemplo em:

http://www.vbforums.com/showthread.php?558791-Read-xml-into-listview-looping


E eu até estava montando para ver funcionar... mas não está recebendo as [Ô]nodes[Ô]... não sei o motivo.
Veja o código abaixo:

 
Imports System.Xml

Public Class Form1

Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim doc As New XmlDocument
doc.Load(Application.StartupPath & [Ô]\ArrayDadosPaciente.xml[Ô])

Dim nodes As XmlNodeList = doc.SelectNodes([Ô]ArrayDadosPaciente\DadosPaciente[Ô])
[ô]Dim nodes As XmlNodeList = doc.SelectNodes([Ô]DadosPaciente[Ô])

For Each node As XmlNode In nodes
Dim strIdPaciente As String = node.SelectSingleNode([Ô]IdPaciente[Ô]).InnerText
Dim strNomePaciente As String = node.SelectSingleNode([Ô]NomePaciente[Ô]).InnerText
Dim strPacienteCartaoSUS As String = node.SelectSingleNode([Ô]PacienteCartaoSUS[Ô]).InnerText
Dim strUnidadePaciente As String = node.SelectSingleNode([Ô]UnidadePaciente[Ô]).InnerText
Dim strUnidadesTinoPaciente As String = node.SelectSingleNode([Ô]UnidadesTinoPaciente[Ô]).InnerText
ListView1.Items.Add(New ListViewItem(New String() {strIdPaciente, strNomePaciente, strPacienteCartaoSUS, strUnidadePaciente, strUnidadesTinoPaciente}))
Next

End Sub

End Class


[][ô]s,
Tunusat.
KURTGU 27/02/2017 23:44:51
#471978
Citação:

:
KURTGU,

Achei um exemplo em:

http://www.vbforums.com/showthread.php?558791-Read-xml-into-listview-looping


E eu até estava montando para ver funcionar... mas não está recebendo as [Ô]nodes[Ô]... não sei o motivo.
Veja o código abaixo:

 
Imports System.Xml

Public Class Form1

Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim doc As New XmlDocument
doc.Load(Application.StartupPath & [Ô]ArrayDadosPaciente.xml[Ô])

Dim nodes As XmlNodeList = doc.SelectNodes([Ô]ArrayDadosPacienteDadosPaciente[Ô])
[ô]Dim nodes As XmlNodeList = doc.SelectNodes([Ô]DadosPaciente[Ô])

For Each node As XmlNode In nodes
Dim strIdPaciente As String = node.SelectSingleNode([Ô]IdPaciente[Ô]).InnerText
Dim strNomePaciente As String = node.SelectSingleNode([Ô]NomePaciente[Ô]).InnerText
Dim strPacienteCartaoSUS As String = node.SelectSingleNode([Ô]PacienteCartaoSUS[Ô]).InnerText
Dim strUnidadePaciente As String = node.SelectSingleNode([Ô]UnidadePaciente[Ô]).InnerText
Dim strUnidadesTinoPaciente As String = node.SelectSingleNode([Ô]UnidadesTinoPaciente[Ô]).InnerText
ListView1.Items.Add(New ListViewItem(New String() {strIdPaciente, strNomePaciente, strPacienteCartaoSUS, strUnidadePaciente, strUnidadesTinoPaciente}))
Next

End Sub

End Class


[][ô]s,
Tunusat.



Acho que desta forma somente se o xml estiver em uma pasta no pc eu estou recebendo os dados de um WebService, que quando publico fica em um servidor externo a minha rede.
DS2T 28/02/2017 08:59:17
#471981
Resposta escolhida
Assim como o WebAPI usa o formato JSON para o tráfego de de dados, o WebService usa XML. Mas isso não significa que você vai ficar manipulando xml na munheca, porque ele vai ser deserializado automaticamente pra você.
Você deve ter reparado que quando você adiciona uma referência Web, o Visual Studio já adiciona todas as classes com a estrutura necessária pra você usá-lo.

Tudo que você precisa fazer na sua aplicação local é:


Private Sub PreencheListView()
Dim lista AS List(Of NamespaceSeuWebServiceNoProjeto.DadosPaciente) = NamespaceSeuWebServiceNoProjeto.SuaClasse.ListarPacientesCadastrados()
for each i as NamespaceSeuWebServiceNoProjeto.DadosPaciente in lista
messagebox.show(i.nomepaciente + [Ô] / ou pode também colocar no listview...[Ô])
next
End Sub
KURTGU 28/02/2017 09:47:35
#471983
DS2T Cara obrigada novamente pela ajuda, tentei desta forma abaixo...mas estou recebendo o erro da foto..na parte em vermelho. Eu tinha tentando quase de uma forma parecida e me deu o mesmo erro, antes



   Private Sub PreencheListView()
Dim servico As New THGService.Service
Dim lista As List(Of THGService.DadosPaciente) = [txt-color=#e80000]servico.ListarPacientesCadastrados(lblunidade.Text)[/txt-color]
For Each i As THGService.DadosPaciente In lista
MessageBox.Show(i.nomepaciente + [Ô] / ou pode também colocar no listview...[Ô])
Next
End Sub
DS2T 28/02/2017 10:22:05
#471985
Vê se assim vai:


Private Sub PreencheListView()
Dim servico As New THGService.Service
Dim lista() As THGService.DadosPaciente= servico.ListarPacientesCadastrados(lblunidade.Text)
For Each i As THGService.DadosPaciente In lista
MessageBox.Show(i.nomepaciente + [Ô] / ou pode também colocar no listview...[Ô])
Next
End Sub
KURTGU 28/02/2017 10:24:42
#471986
Sim agora deu certo obrigada pela ajuda novamente, agora se entendi direito no meu webservice ele ja estava definindo como lista entao nao precisava novamente declarar a list seria isso?

Citação:

:
Vê se assim vai:


Private Sub PreencheListView()
Dim servico As New THGService.Service
Dim lista() As THGService.DadosPaciente)= servico.ListarPacientesCadastrados(lblunidade.Text)
For Each i As THGService.DadosPaciente In lista
MessageBox.Show(i.nomepaciente + [Ô] / ou pode também colocar no listview...[Ô])
Next
End Sub


DS2T 28/02/2017 10:49:04
#471987
Imagine o Webservice como uma função qualquer de uma aplicação Windows Form. Do mesmo jeito que você usaria a função declarada num módulo, você usaria do WebService.

O problema todo no seu caso, é que você está usando Coleção (Uma lista genérica).
Quando você clica em Add Service Reference... Deve encontrar um botão chamado [Ô]Advanced[Ô]. Clica nele. Verá que ele te dá opções de como tratar suas coleções. No seu caso, a opção [Ô]System.Array[Ô] deve estar selecionada. Por isso a lista genérica foi serializada para um Array.

Por isso teve essa diferença. Por mais que no seu Webservice estivesse como lista genérica... na hora de criar as classes que representam o Webservice dentro da sua aplicação WindowsForm, ele representou a lista como um vetor unidimensional.

Tirando esses pequenos detalhes, o uso da função é o mesmo que de uma função normal. Graças ao Visual Studio que já encapsula toda a recepção de dados, envio de envelopes SOAP, etc.

Abraços!
KURTGU 28/02/2017 11:02:23
#471988
Citação:

:
Imagine o Webservice como uma função qualquer de uma aplicação Windows Form. Do mesmo jeito que você usaria a função declarada num módulo, você usaria do WebService.

O problema todo no seu caso, é que você está usando Coleção (Uma lista genérica).
Quando você clica em Add Service Reference... Deve encontrar um botão chamado [Ô]Advanced[Ô]. Clica nele. Verá que ele te dá opções de como tratar suas coleções. No seu caso, a opção [Ô]System.Array[Ô] deve estar selecionada. Por isso a lista genérica foi serializada para um Array.

Por isso teve essa diferença. Por mais que no seu Webservice estivesse como lista genérica... na hora de criar as classes que representam o Webservice dentro da sua aplicação WindowsForm, ele representou a lista como um vetor unidimensional.

Tirando esses pequenos detalhes, o uso da função é o mesmo que de uma função normal. Graças ao Visual Studio que já encapsula toda a recepção de dados, envio de envelopes SOAP, etc.

Abraços!



Acabei de ver la esta marcado mesmo vlw pela ajuda, e pela Aula....
Tópico encerrado , respostas não são mais permitidas