Dev (Back & Front)ARTIGO

Utilizando o Wrapper.Net para exibir os dados em um GridView

Vamos automatizar a exibição dos produtos diretamente em um componente GridView. Antes de iniciar o artigo, faça o download dos arquivos do Wrapper .Net diretamente do nosso perfil no GitHub. Com os arquivos em mãos, adicione-os ao projeto no Visual Studio, ou se preferir, façam uma referência à .dll que também está disponível para download.

Em um artigo anterior mostramos como utilizar o framework .Net para tratar os dados de retorno da API do Buscapé e exibi-los de forma simples na tela para os usuários. No tutorial de hoje, vamos utilizar um pouco mais dos componentes do framework para exibir os resultados. Para ser mais exato, utilizaremos o componente GridView para exibi-los.

No seu projeto atual do Visual Studio, adicione à página o componente GridView que está na aba Data da toolbox.

No evento Load da página, instancie um objeto da classe Apiki_Buscapé_API informando seu ApplicationID.

protected void Page_Load(object sender, EventArgs e)
{
Apiki_Buscape_API.Apiki_Buscape_API apiBuscape = new Apiki_Buscape_API.Apiki_Buscape_API("564771466d477a4458664d3d");
}

Neste artigo vamos utilizar o método FindOfferList para recuperar informações dos produtos em oferta no Buscapé. Para utilizar o método, instanciaremos um novo objeto da classe FiltrosFindProducts e vamos customizar nossa requisição somente pela categoria 6424 – Notebook.

Apiki_Buscape_API.FiltrosFindOfferList filtros = new Apiki_Buscape_API.FiltrosFindOfferList();
filtros.CategoryId = 6424;
string result = apiBuscape.FindOfferList(filtros);
Response.Write(result);

Exibindo o resultado na tela podemos ver a estrutura do XML retornado pelo método FindOfferList:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Result xmlns="urn:buscape" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" page="1" totalPages="125" totalResultsSellers="45" totalResultsReturned="16" totalResultsAvailable="1999" xsi:schemaLocation="http://developer.buscape.com/admin/buscape.xsd">
<details>
<applicationID>564771466d477a4458664d3d</applicationID>
<applicationVersion>1.0.0.0</applicationVersion>
<applicationPath>http://bws-apps.buscape.com/mobile/update</applicationPath>
<date>2012-03-06T10:16:23.641-03:00</date>
<elapsedTime>17</elapsedTime>

<status>success</status>
<code>0</code>
<message>success</message>
</details>
<category hasOffer="false" isFinal="true" parentCategoryId="2" id="6424">
<thumbnail url="http://imagem.buscape.com.br/bp5/categorias/6424.jpg"/>
<links>

<link type="category" url="http://compare.buscape.com.br/notebook.html?mdapp=100&amp;mddtn=69672797"/>
<link type="xml" url="http://sandbox.buscape.com/service/findProductList/564771466d477a4458664d3d/br/?categoryId=6424"/>
</links>
<name>Notebook</name>
</category>
<offer productId="337809" id="93801895" categoryId="6424">
<offerName>Apple MacBook Air 13 ´ 1.7GHz 256GB ( MC966BZ / A ) - Dual Core Intel Core i5, 1.7GHz, 4GB de memória, tela de 13 polegadas, 256GB de armazenamento em flash, OS X Lion MC966BZ / A</offerName>
<links>

Para exibir os dados das ofertas encontradas no GridView, vamos utilizar as classes XmlDocument, XmlNodeList, XmlNode e XmlNodeReader presentes no namespace System.Xml. Portanto, antes de começar, adicione a diretiva using para este namespace.

using System.Xml;

Os primeiros passos para recuperar os dados das ofertas são idênticos aos do artigo anterior citado no início deste artigo. Vamos instanciar um objeto da classe XmlDocument e utilizar o seu método LoadXml para carregar o XML. Logo após, vamos salvar todos os nós offer em uma coleção do tipo XmlNodeList e vamos percorrê-la com um foreach.

System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
xmldoc.LoadXml(result);

DataSet ds = new DataSet();

// Recupera somente os nós offer
System.Xml.XmlNodeList offers = xmldoc.GetElementsByTagName("offer");
foreach (System.Xml.XmlNode item in offers)
{
// ...
}
1

Notem que fora do foreach instanciamos um <strong>DataSet</strong>, que utilizaremos logo mais para carregar os dados no grid.

Agora dentro do foreach vamos instanciar o nosso objeto <strong>reader</strong> que será utilizado pelo DataSet para realizar o “parser” dos dados do XML para o <strong>DataTable</strong> dentro do DataSet.

1
foreach (System.Xml.XmlNode item in products)
{
System.Xml.XmlNodeReader reader = new System.Xml.XmlNodeReader(item);
ds.ReadXml(reader);
reader.Close();
}
[/chsarp]

Pronto! Você deve obter uma tela semelhante ao print abaixo:

Abaixo, o código completo desse artigo:

protected void Page_Load(object sender, EventArgs e)
{
// Retorna os dados da API do Buscapé
Apiki_Buscape_API.Apiki_Buscape_API apiBuscape = new Apiki_Buscape_API.Apiki_Buscape_API("564771466d477a4458664d3d");
Apiki_Buscape_API.FiltrosFindOfferList filtros = new Apiki_Buscape_API.FiltrosFindOfferList();
filtros.CategoryId = 6424;
string result = apiBuscape.FindOfferList(filtros);

// Parser do XML retornado
System.Xml.XmlDocument xmldoc = new System.Xml.XmlDocument();
xmldoc.LoadXml(result);

// Objeto para salvar os dados das ofertas
DataSet ds = new DataSet();

// Recupera somente os nós offer
System.Xml.XmlNodeList products = xmldoc.GetElementsByTagName("offer");
foreach (System.Xml.XmlNode item in products)
{
// Converte do XML para o DataTable
System.Xml.XmlNodeReader reader = new System.Xml.XmlNodeReader(item);
ds.ReadXml(reader);
reader.Close();
}

Então, é isso developers! Continuem acompanhando nossos artigos sobre a API do Buscapé e seus Wrappers. Em breve daremos continuidade ao assunto de tratamento dos dados com o Wrapper.Net. Fiquem de olho!

pelo Dev Buscapé Developer desenvolvedores externos podem utilizar o WebService disponível pelo Buscapé para criar suas próprias aplicações. No Githun, acompanhe /devbuscapecompany

Ver perfil