AJUDA COM AS LIST(OF) E 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
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.
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.
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
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
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
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
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!
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....