Clique aqui para ler todos os artigos desta edição
Treinamento em ASP.NET (Parte I)
por Renato Haddad
O objetivo deste treinamento é mostrar a você, leitor, como criar aplicações para Internet por meio dos controles mais utilizados no dia-a-dia de uma página. A linguagem utilizada será o Visual Basic .NET, mas nada impede que se utilize o C#, pois a diferença é somente uma questão de sintaxe. A única ferramenta que você precisa é o Visual Studio .NET, na qual é possível criar desde o banco de dados até Componentes, Classes e Web Services. O ASP.NET vem conquistando enorme espaço entre os desenvolvedores devido a sua facilidade de uso, manutenção e performance. O processamento das páginas ocorre no servidor, o que significa dizer que, quando o internauta navega nas páginas, estas são requisitadas ao servidor, que verifica a solicitação, realiza o Parse das páginas, monta um HTML e as envia para o navegador que as solicitou. E, já que mencionei HTML, não se preocupe, pois é possível desenvolver toda a aplicação sem usar nenhuma TAG de HTML. Tudo o que você precisa saber é a linguagem VB.NET ou a C#. Cabe ressaltar que o Framework é o responsável por todo esse processo (por isso a necessidade de tê-lo instalado no servidor), juntamente, é claro, com o Internet Information Server.
No Visual Studio, selecione o menu File / New Project e crie um projeto do tipo ASP.NET Web Application chamado MSDNMag. Clique no botão OK para criar automaticamente o site virtual dessa aplicação. Abra o Solution Explorer (CTRL + ALT + L) e note que já existe um arquivo chamado WebForm1.aspx. Como ele não nos interessa, exclua-o. Para adicionar um novo formulário, clique com o botão direito no projeto e selecione Add / Add Web Form chamado Listas.aspx.. Pressione F4 para exibir a janela de propriedades e configure a Page Layout = Flow Layout. No fundo do documento, digite o texto “Controle de Listas ASP.NET” e utilize a barra de ferramentas de formatação para melhorar a aparência do texto. Exiba a Toolbox (CTRL + ALT + X) e veja toda a lista de controles disponíveis. Monte uma página com os seguintes controles: um TextBox (ID = txtPrato), um ListBox (Multiline = True, ID = lstCardapio), cinco Buttons (btnIncluir, btnExcluir, btnLimpar, btnPesquisar e btnSelecionados) e um Label (ID = lblItems), conforme mostra a Figura 1.
Figura 1. Layout do formulário Listas
Para criar os códigos, dê um duplo clique em cada botão e digite os códigos relativos a eles (apresentados a seguir). A explicação dos códigos é mostrada nos próprios comentários das linhas.
Botão Incluir
Private Sub btnIncluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnIncluir.Click
'verifica se o txtPrato contém algo digitado
If txtPrato.Text <> "" Then
'inclui o item na lista
lstCardapio.Items.Add(txtPrato.Text.Trim())
End If
'apaga o campo
txtPrato.Text = ""
End Sub
Botão Excluir
Private Sub btnExcluir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExcluir.Click
'Verifica se há um item selecionado
If Me.lstCardapio.SelectedIndex >= 0 Then
'Remove o item da lista
lstCardapio.Items.RemoveAt(lstCardapio.SelectedIndex)
End If
End Sub
Botão Limpar
Private Sub btnLimpar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpar.Click
'limpa toda a lista
lstCardapio.Items.Clear()
End Sub
Botão Pesquisar
Private Sub btnPesquisar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPesquisar.Click
'Desmarca qualquer item da lista
lstCardapio.SelectedIndex = -1
'pesquisa o item na lista
lstCardapio.Items.FindByText(txtPrato.Text.Trim()).Selected = True
'zera o campo
txtPrato.Text = ""
End Sub
Botão Selecionados
Private Sub btnSelecionados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSelecionados.Click
'Apaga o conteúdo do Label
lblItems.Text = ""
'Define o objeto do tipo ListItem
Dim objItem As ListItem
'Monta um looping para varrer todos os itens existentes na ListBox lstCardapio
For Each objItem In lstCardapio.Items
'Se o item atual estiver selecionado
If objItem.Selected Then
'Captura o texto do item e exibe-o no Label lblItems. O operador += concatena os textos
lblItems.Text += objItem.Text & " - "
End If
Next
End Sub
Salve o arquivo (CTRL + S) e exiba o Solution Explorer. No Solution Explorer, defina esse arquivo como Default. Para fazer isso, clique com o botão direito no Listas.aspx e selecione Set As Start Page. Para compilar o formulário, selecione o menu Build / Build Solution. Para executar, selecione o menu Debug / Start (F5). Outra opção muito utilizada consiste em pressionar CTRL + F5. Essa opção já salva, compila, abre o navegador e executa a aplicação. Veja o resultado da execução na Figura 2.
Figura 2. Execução do formulário Listas
Você deve estar se perguntando onde é que entra o VB.NET ou C#, ou seja, o código que criamos para cada botão. A resposta é simples: quando você compila a aplicação, é gerado um arquivo MSDNMag.DLL contendo todos os códigos criados. Quando você abre uma página ASP.NET, ela é processada no servidor, que por sua vez identifica o navegador que a solicitou, monta um HTML e a envia ao navegador. As vantagens desse processo completo são muitas, dentre as quais destaco:
- o arquivo de layout (Listas.aspx) fica separado do arquivo de códigos (Listas.aspx.vb);
- a propriedade intelectual (códigos) fica protegida, pois está dentro da DLL;
- quem se encarrega de montar um HTML que seja suportado pelo navegador é o Framework, e não você. Portanto, o código criado é apenas um, mas pode haver vários produtos finais.
No Solution Explorer, adicione um novo formulário Add / Add Web Form chamado Carros.aspx e que contenha os seguintes controles: dois DropDown (ID = dropMarcas e dropModelos), um Calendar, um Button (Text = Verificar Dados e ID = btnVerificar) e um Label (lblCarro). Para o controle dropMarcas, configure a propriedade AutoPostBack = True. Isso é fundamental para que o formulário seja submetido ao servidor. Como esses controles são utilizados com freqüência, o funcionamento ocorre da seguinte forma: no momento em que o formulário é carregado, apenas na primeira vez é montado o DropMarcas. Assim que o internauta seleciona uma marca, é montado o DropModelos com os modelos específicos à marca selecionada. Em seguida, o internauta escolhe uma data no calendário e, quando pressiona o botão Verificar, os dados são capturados dos controles e seus conteúdos são exibidos no Label.
O DropMarcas será carregado assim que o formulário for aberto, portanto, digite o seguinte código no evento Page_Load:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Verifica se é a primeira vez que o formulário está sendo carregado. Se sim, executa o código
If Not Page.IsPostBack Then
'Define um ArrayList com as opções
Dim arrayMarca As New ArrayList
With arrayMarca
.Add("GM")
.Add("Citroen")
.Add("Volks")
.Add("Ford")
.Sort()
End With
'Define a origem do controles DropMarcas que é o array definido acima
dropMarcas.DataSource = arrayMarca
'O DataBind preenche o controle
dropMarcas.DataBind()
'Insere um item na primeira opção do DropMarcas
dropMarcas.Items.Insert(0, New ListItem("marca...", ""))
End If
End Sub
Dê um duplo clique no dropMarcas e digite o código apresentado abaixo. Como esse controle tem a propriedade AutoPostBack definida como True, assim que um item for selecionado, o formulário será enviado ao servidor, que montará o dropModelos de acordo com a marca selecionada.
Private Sub dropMarcas_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dropMarcas.SelectedIndexChanged
'Limpa o conteúdo do dropModelos
dropModelos.Items.Clear()
'Define um tabela que será criada apenas na memória
Dim tabModelos As New DataTable
'Define uma linha
Dim newRow As DataRow
'Define as colunas com os nomes e tipos
tabModelos.Columns.Add(New DataColumn("codigo", GetType(String)))
tabModelos.Columns.Add(New DataColumn("modelo", GetType(String)))
'Verifica qual o item selecionado
Select Case dropMarcas.SelectedItem.ToString()
'Se for este fabricante, monta os dados
Case "GM"
'Cria uma nova linha
newRow = tabModelos.NewRow()
'Define os conteúdos
newRow("codigo") = "10"
newRow("modelo") = "Vectra"
'Adiciona a linha à tabela
tabModelos.Rows.Add(newRow)
...copie este bloco acima e crie outros modelos ...
...Para cada Case monte os devidos modelos de cada fabricante conforme o código anterior
Case "Citroen"
Case "Volks"
Case "Ford"
End Select
'Informa a origem do dropModelos que é a tabela definida com os respectivos modelos
dropModelos.DataSource = tabModelos
'Define o campo que será exibido no dropModelos
dropModelos.DataTextField = "modelo"
'Define o campo que será armazenado para cada item
dropModelos.DataValueField = "codigo"
'Preenche o dropModelos
dropModelos.DataBind()
End Sub
Em seguida, crie o código para o btnVerificar que exibe no lblDados o conteúdo.
Private Sub btnVerificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnVerificar.Click
lblDados.Text = "Você selecionou a Marca: " + _
dropMarcas.SelectedItem.Text + _
", o modelo: " + dropModelos.SelectedItem.Text + _
", código: " + dropModelos.SelectedItem.Value + _
", data de compra: " + Calendar1.SelectedDate.ToShortDateString
End Sub
Selecione o projeto no Solution Explorer, defina-o como Set As Start Page e pressione CTRL + F5 para salvá-lo, compilá-lo e executá-lo no navegador. Veja o resultado na Figura 3.
Figura 3. Execução do formulário Carros
Conclusões
O ASP.NET é atualmente o meio mais produtivo e rápido de se criar aplicações para Internet, além, é claro, de oferecer melhor performance e facilidade de manutenção. No próximo artigo, abordaremos outros controles e acesso a banco de dados. Aproveitem a leitura, e até lá! “No stress, think .NET”.
Referências:
http://www.asp.net
http://www.gotdotnet.com
http://www.codeproject.com
http://www.linhadecodigo.com.br