Como obter dados de um XML e formatar as colunas de um DataGrid a partir de um DataTable para Windows Mobile

htc5.pngNesse tutorial criaremos um projeto que terá o objetivo de obter dados de um XML vindo de uma url, sendo que, nossa url será: href=”http://devmobile.blog.br/rss”.Faremos duas telas, para começarmos a entender como transitar de tela em tela em nossas aplicações Windows Mobile.
Teremos uma tela para obter os dados da url onde armazenaremos esses dados em um objeto e uma outra tela para mostrarmos os dados em um grid utilizando os dados do objeto.
Será mostrado como criar uma instância para se conectar a web e receber os dados da url, utilizaremos para isso as classes WebRequest e WebResponse do namespace System.Net e criaremos um objeto Stream do namespace System.IO onde será alocado o conjunto de bytes, o arquivo, vindo do objeto de conexão.

Criaremos um objeto DataSet (Dataset é um objeto pertencente ao ADO.Net, que tem como objetivo ser o repositório de dados deste objeto, possuindo tabelas, colunas, linhas, etc. O objeto dataset também tem recursos para manipulação dos dados nele contidos (inclusão, exclusão e alteração)) para armazenar os dados do stream e utilizamos o objeto DataSet no grid da segunda tela.
Iremos criar uma tabela com um DataTable . Criaremos 2 colunas da tabela e faremos uma estrutura de repetição na qual criará as linhas do DataTable de cada coluna.
Criaremos outro DataSet para receber a tabela (objeto DataTable) e mostraremos no grid.

Primeiro crie um novo projeto:
File – New – Project…

image001.png

Em Project types clique em Smart Device, em Templates Smart Device Project.
No canto superior selecione Framework 2.0. (Mais informações sobre Framework clique em Detalhes .NET Framework)
Em name coloque ObterXML que será o nome do projeto.
Location coloque o caminho que desejar e clique em OK.

image004.jpg

Automaticamente será criado um Form com o nome Form1, como a figura abaixo:

image006.jpg

Não exclua, usaremo-lo no nosso projeto.
Com o form no modo design, será necessário alguns componentes para mostrar os dados vindo do XML.
Coloque no form 4 button’s, 2 label com as seguintes propriedades:

Button 1 – Obter XML

image008.jpg

Button 2 – Gerar XML

image010.jpg

Button 3 – Sair

image012.jpg

Button 4 - Visualizar

image014.jpg

Label – Titulo

image016.jpg
Label – Mensagem

image018.jpg

Feito o passo anterior de colocar os componentes e atualizar suas propriedades do form deverá ser como a figura abaixo:

img1.jpg
Agora vamos para o código dos botões onde será a navegabilidade do nosso projeto.
Dê um clique duplo no botão Sair e coloque o código como a figura abaixo:

image019.png

Dê um clique duplo no botão obter xml e coloque o código abaixo:

image021.png

No label “lblMensagem” colocamos mensagens para mostrarmos que está acontecendo algo durante baixamos os dados da url.
Utilizamos algumas classes de System.IO e System.NET para acessarmos aos dados vindo da url, como WebRequest, WebResponse, Stream.

A classe Webequest faz uso de classes que implementam a interface IWebRequestCreate segundo uma tabela definida no ficheiro de configuração configuração.Essas classes são responsáveis por criar instâncias de classes derivadas de WebRequest que serão devolvidas pelos métodos CreateDefault e Create da classe WebRequest e que irá processar o pedido HTTP.
Criamos um objeto WebResponse para receber a solicitação a partir do método GetResponse() da classe WebRequest.
Utilizamos um objeto Stream para receber os bytes (dados) do objeto WebResponse e criamos um objeto XmlTextReader para ler os dados do Stream.

Dê um clique duplo no botão Gerar Tabela e coloque o código abaixo:

image024.jpg

No label “lblMensagem” colocamos mensagens para mostrar que está acontecendo algo enquanto a tabela é gerada. Criamos duas variáveis do tipo string para receber os registros de cada linha.
Criamos um DataTable com duas colunas (“Título”, “Descrição”) e colocamos o nome da mesma de “Listagem”.
Na estrutura de repetição vamos percorrer o DataSet que armazenamos os dados do XML e criamos as linhas de nossa tabela com as variáveis que recebem cada registro por iteração.
Logo após criamos um novo DataSet para receber a tabela formatada.
Fizemos uma nova instância do Form2 para enviarmos o DataSet que criamos com a tabela formatada pelo método criarTabela(DataSet ds) da outra tela que irei explicar.
Setamos a propriedade Visible do botão Visualizar Tabela como true para acessarmos o Form2.

Clique duas vezes no botão “Visualizar Tabela“ e coloque o seguinte código:

image028.jpg

Pegamos o objeto criado no ínicio da classe do Form2, sendo que se ele for null, instânciamos e logo após chamamos o metódo Show() para visualizarmos o segundo form.

Setamos como false as propriedades Enable do botão gerar tabela e Visible do botão Visualizar para quando voltarmos ao primeiro form ele não estejam acessivéis, somente serão utilizadas quando obtermos o xml.
Coloque o código abaixo logo no inicio do form.

image026.jpg

Colocamos 3 using, System.XML, System.IO e System.NET para termos acesso as classes de conexão, xml e etc.
Criamos uma variável string para colocarmos a url, um objeto DataSet para obtermos a resposta da url e uma instância do Form2.

Abra o código-fonte do Form2 e coloque o código abaixo:

image030.jpg

Criamos o método criarTabela, que recebe por parâmetro um objeto DataSet que contém 1 tabela que formatamos vindo do Form1.
Com a propriedade DataSource do GridView, setamos os dados do DataSet.
Com o método Invalidate() atualizamos o grid para que os dados sejam visualizados na tela.
Atualizamos a tela com método Refresh().
No evento do botão Voltar criamos uma instância do Form1 para retornarmos a primeira tela de nossa aplicação.
Fechamos o Form2 com o método Close() e utilizamos o método Dispose() do Form2 para liberarmos da memória.
A tela do nosso Form2 será da seguinte forma:

image032.jpg

Com isso finalizamos nosso tutorial de como obtermos dados de um arquivo XML e formatar uma tabela no código para um gridView.
Na tela abaixo é o resultado de nosso tutorial.

image034.jpg

Baixe o exemplo completo.
Exemplo de como obter dados de um XML e formatar um DataTable.



Sobre o Autor

Este artigo foi escrito por Thiago César.
Thiago é desenvolvedor de aplicações Windows Mobile, J2ME, Web (ASP, ASP.NET). Para conversar com o autor use o e-mail, msn e gtalk tceufrasio@gmail.com.



Receba artigos em seu e-mail

Receba os novos artigos do blog em seu e-mail. E-Mail:



Deixe um comentário

blogarama.com Globe of Blogs EatonWeb Blog Directory