NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosNet : Webservices004
Quer receber novidades e e-books gratuitos?

Sistema de Enquetes baseado em WebServices –Parte IV

Olá pessoal,

Chegamos a quarta etapa do nosso tutorial, agradeço a todos que têm lido e aprendido com este material. Nos primeiros tutoriais desta série, aprendemos a implementar e consumir um WebService. Por isso, se você ainda têm dúvidas sobre isso, é melhor que leia novamente a parte I,II, e III.

Hoje trabalharemos com WebServices retornando DataSets. Começaremos a desenvolver o código que exibe uma determinada enquete e seus itens, e também já implementaremos uma interface de exibição destes dados.

Abra o projeto Enquetes que já havíamos criado anteriormente.

Adicione um novo arquivo ao projeto do tipo WebService, e dê a ele o nome de EnqueteServices.asmx:

Clique no botão ViewCode para exibir o código do arquivo.

Vamos criar agora o serviço ObterEnquete, na qual irá selecionar uma das enquetes cadastradas no banco de dados e também selecionará seus itens. Estes dados serão armazenados em um DataSet com duas tabelas. Deverá ser passado o parâmetro IDEnquete. Para isso, digite o código conforme está abaixo:

//Descrição do serviço

            [WebMethod(Description="Seleciona a enquete através de um parâmetro de identificação")]

                  //Assinatura do método, passando o parâmetro IDEnquete

            public DataSet ObterEnquete(int IDEnquete) {

                  //Cria o adaptador de dados para obter a enquete

            OleDbDataAdapter OledbAdp1=new OleDbDataAdapter("Select IDEnquete,Pergunta from TbEnquetes where IDEnquete=" + IDEnquete + "",Conexao);

                  //Cria o adaptador de dados para obter os itens da enquete selecionada

            OleDbDataAdapter OledbAdp2=new OleDbDataAdapter("Select IDItem,Texto,Votos from TbItens where IDEnquete=" + IDEnquete + "",Conexao);

                  //Cria o DataSet

                  DataSet dsEnquetes=new DataSet();

                  //Anexa os dados dos adaptadores em tabelas do Dataset

                  OledbAdp1.Fill(dsEnquetes,"Enquete");

                  OledbAdp2.Fill(dsEnquetes,"Itens");

                  //Retorna o DataSet

                  return dsEnquetes;

            }

Um detalhe importante neste código é que a conexão não foi criado neste trecho. Mas por quê?

Bem, como vamos utilizar esta mesma conexão em todos os serviços. Declaramos esta conexão como pública. Então faça esta declaração em seu código logo após a declaração da classe:

public class EnqueteService : System.Web.Services.WebService {

            //Cria a conexão a ser utilizada no projeto

            public OleDbConnection Conexao=new

OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;Data

source=E:/SistemaDeEnquetes.mdb");

Lembre-se: digite somente o trecho referente ao objeto OleDbConnection, pois a declaração da classe já havia sido feita automaticamente

No método ObterEnquete não encontramos muitas novidades, a não ser na utilização de dois DataAdapters no mesmo DataSet. Como o DataSet é uma estrutura de Base de Dados ele permite a inclusão de várias tabelas, por isso, não houve a necessidade de criar mais um DataSet. Vamos fazer o teste do WebService, mas antes disso é necessário incluir pelo menos uma enquete no banco de dados e seus itens. Abra o banco de dados e faça isso, se quiser pode utilizar o meu exemplo:

Cadastrando a enquete...

Cadastrando os itens...

Agora vou executar o WebService e informar o valor 1 para o parâmetro IDEnquete:

Exibindo os serviços disponíveis...

Selecionando o serviço ObterEnquete e passando o valor do parâmetro IDEnquete...

Resultado do serviço...

Ok, vejam que os resultados foram retornados. Isso significa que sua enquete já pode ser visualizada. Então vamos construir agora a interface que consumirá este serviço.

Adicione um novo arquivo do tipo WebForm e dê a ele o nome VisualizarEnquete.aspx

Defina o Set StartPage para este arquivo:

Agora, conforme o modelo abaixo insira os seguintes WebControls:

Panel – Apenas para a organização dos elementos.

DataList – ID=dlEnquete

RadioButtonList – ID=rdItens

Button –ID=btnResultado – Text=Ver Resultado

Button – ID=btnVotar – Text=Votar

Vamos agora configuar o DataList para que ele exiba a pergunta da enquete.

Clique com o botão direito sobre o dlEnquete, vá em Edit Templates >Item Templates

Arraste um Label para a região ItemTemplate. Selecione o Label e na caixa de propriedades clique na opção DataBindings

Na parte da direita da tela que se abriu, expanda o item Container e clique em DataItem:

Marque a opção Custom binding expression e escreva a expressão conforme a imagem abaixo:

Ok, agora vamos saía da edição do templates do DataList. Vamos fazer referência ao serviço no qual iremos consumir. Clique com o  botão direito sobre o projeto e escolha Add Web Reference....Caso não saiba como fazer a referência, leia o tutorial anterior a este.

Vejam dei o nome localhost como referência ao meu serviço.

Clique no botão view Code para visualizarmos o código do arquivo VisualizarEnquete.aspx

Vamos criar o método que exibirá a enquete. Digite o código abaixo:

private void MostrarEnquete(int IDEnquete)

            {

                  //Cria a instãncia do serviço

                  localhost.EnqueteService es=new Enquetes.localhost.EnqueteService();

                  //Anexa ao DataList o conteúdo da tabela Enquete que está no DataSet do WebService

                 dlEnquete.DataSource=es.ObterEnquete(IDEnquete).Tables["Enquete"];

                  dlEnquete.DataBind();

                  //Anexa ao RadiobuttonList o conteúdo que está na tabela Itens do DataSet

                  rdItens.DataTextField="Texto";

                  rdItens.DataValueField="IDItem";

                  rdItens.DataSource=es.ObterEnquete(IDEnquete).Tables["Itens"];

                  rdItens.DataBind();

            }

Viram como foi simples? Em outras tecnologias seria no mínimo necessário o uso de alguns ifs e loops, mas em .Net, seus controles já estão preparados para receber dados em coleções.

Não esqueça de chamar este código no PageLoad:

private void Page_Load(object sender, System.EventArgs e)

            {

                  if(!Page.IsPostBack){

                  MostrarEnquete(1);

                  }

            }

Agora formate sua aplicação, se quiser usem o meu modelo como sugestão:

Agora vamos aos testes:

Exibindo a enquete...

Faça o teste cadastrando mais enquetes e não esqueça de mudar o parâmetro IDItem:

Alterando o IDEnquete para mostrar uma outra enquete...

Até mais pessoal,

No próximo implementaremos a votação  da enquete!

Lano de Castro

lanodecastro@hotmail.com

1 Visão geral do .NET Framework e do CLR
1 Comunicação .NET e VB 6.0 (com Visual Studio.NET 2005) - Parte I
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 1
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 2
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 3
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 4
1 Desenvolvendo aplicações Windows utilizando o VB.NET e o C# - Parte 5
1 VB: Menu Principal, Menu PopUp e Arquivos Texto
Visual Studio
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control
1 Visual Web Developer - 2005 - Beta 2 - Introdução
1 ASP.NET 2.0 - Conhecendo o GridView
1 ASP.NET 2.0 - Utilizando o GridView e DetailsView
1 ASP.NET 2.0 - Conhecendo o ObjectDataSource Control - Parte 2
1 ASP.NET 2.0 - Utilizando o XmlDataSource
1 Envio de e-mail através de formulário web
1 ADO.NET 2.0 - Conhecendo as novidades parte 1
1 Série Visual Source Safe - Parte 1
1 Série Visual Source Safe - Parte 3
1 URL Indexável – Reescrever URL de uma forma amigável
1 Permissão de Página Utilizando Web.Config
1 Usando public interface
1 Trabalhando com o componente TabContainer
1 Adicionando Menu no DataGridView
ASP.NET
1 Conhecendo o ambiente integrado do WebMatrix
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte I
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte II
1 Desenvolvendo aplicações ASP.NET no WebMatrix - WebControls – Parte III
1 Acessando um banco de dados facilmente com ADO.Net e Datagrid
1 Desvendando os segredos do Dataset- Parte I
1 Construindo um Sistema de Publicação de Notícias – Parte 1
1 Construindo um Sistema de Publicação de Notícias – Parte 2
1 Construindo um Sistema de Publicação de Notícias – Parte 3
1 Construindo um Sistema de Publicação de Notícias – Parte 4
1 Construindo um Sistema de Publicação de Notícias – Parte 5
1 Login com Perfil de Acesso
1 Guest Book com XML - Parte 1
1 Guest Book com XML - Parte 2
1 Agendando Datas no Calendário com XML
1 Filtrando e Organizando Dados com o Controle DataView
1 Lista de Dados com Subitens – Parte 1
1 Lista de Dados com Subitens – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 1
1 Trabalhando com Arquivos e Diretórios – Parte 2
1 Trabalhando com Arquivos e Diretórios – Parte 3
1 Sistema de Enquetes baseado em WebServices – Parte 1
1 Sistema de Enquetes baseado em WebServices – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 3
1 Upload de Arquivos
1 Crie seu próprio código de verificação
1 Login e Senha com FormsAuthentication – Parte 1
1 Login e Senha com FormsAuthentication – Parte 2
1 Sistema de Enquetes baseado em WebServices – Parte 4
1 Sistema de Enquetes baseado em WebServices – Parte 5
1 Sistema de Enquetes baseado em WebServices – Parte 6