Upload
keilacastro
View
302
Download
1
Embed Size (px)
Citation preview
ASP.NET 3.5 em VB.NET e C#
Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual;
Este documento de distribuio gratuita para uso pessoal. vedada qualquer outra forma de utilizao, divulgao, publicao, distribuio etc. sem autorizao do autor.
Sobre o Autor
Fernando Amaral trabalha a mais de 10 anos com o desenvolvimento de software. certificado Microsoft MCP, MCAD, MCSD, MCDBA e MCT, Comptia CDIA+, Project Managment Institute PMP. Ps Graduado em Gesto de Sistemas de Informao pela Uniderp e em Melhoria de Processo de Software pela UFLA. Alm disso tudo Ateu. Atualmente reside em Campo Grande MS.
Sobre www.fernandoamaral.com.br
Eu mantenho um site com alguns artigos e tutoriais de tecnologia no endereo www.fernandoamaral.com.br. Atravs do site existe um formulrio onde posso ser contatado.
Sobre ASP.NET 3.5 em VB.NET e C#
Existe muito contedo para quem quer aprender ASP.NET. Existem centenas de bons livros. Porm este curso em formato digital traz algumas caractersticas que talvez voc no encontre em nenhum lugar:
completo no sentido que abrange todos os principais temas relacionados ao ASP.NET 3.5;
Segue uma seqncia lgica. Voc no precisar ficar garimpando informaes em lugares diferentes;
em portugus.
Porque no um Livro?
Este curso foi criado dentro de minhas possibilidades, de maneira que no precisei assumir nenhum compromisso.
ASP.NET 3.5 em VB.NET e C# 1. Introduo ao ASP.NET....................................................
7
2. Visual Studio 2008: O ambiente e as linguagens.............
13 3. Web Forms.......................................................................
31 4. Controle............................................................................
33 5. Master Page......................................................................
44
6. Themes e Skins.................................................................
53 7. Navigation........................................................................
59 8. WebParts.......................................................................... 71 10 LINQ .............................................................................. 116 11. MemberShip e Roles .....................................................
119 12 .Manuteno de Estado...................................................
153 13 . ASP.NET AJAX ...........................................................
167 14. Criando e Consumindo WebServices ............................
179 15. Criando uma pgina de erros personalizada...................
188 16. Eventos da aplicao...................................................... 191 17. Distribuindo sua Aplicao ...........................................
193 18. Relatrios com Crystal Report ......................................
202
6 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
1. Introduo ao ASP.NET Desenvolver aplicaes nunca foi to fcil. Ambientes RAD cada vez mais modernos e amigveis tem tornado o trabalho dos arquitetos de software cada vez mais simples. Com o verso 3.5 do ASP.NET, conseguiu-se atingir nveis de produtividade nunca antes imaginados.
Este curso tem por objetivo introduzir o desenvolvedor no mundo do desenvolvimento de aplicaes Web utilizando o ASP.NET 3.5. No um curso introdutrio de lgica de programao.
Os exemplos ao longo do curso sero todos demonstrados em VB.NET e C#.
Blocos de cdigo sero precedidos pelo cone da linguagem utilizada:
para cdigo em VB
para cdigo em C#
O que o Microsoft .NET FrameWork?
Tradicionalmente o desenvolvedor escreve Software para um sistema Operacional ou dispositivo especifico. Por exemplo, ao criar um programa no Delphi 7 ou no Visual Basic 6, ele esta criado um Software para rodar em Sistemas Operacionais Windows sobre a plataforma Intel.
Ao desenvolver um software para o .NET, o desenvolvedor ao invs disto esta fazendo um software para rodar em qualquer dispositivo ou plataforma que tenha o .NET Framework instalado.
Existem dezenas de linguagem que podem ser usadas para criar um programa .NET, a Microsoft desenvolveu o VB.NET, uma verso Orientada a Objetos do clssico VB e o C#, que herdou sua sintaxe do C++. Outras empresas desenvolveram outras: COBOL, Delphi, Fortran etc. s para citar algumas. Voc mesmo pode criar sua prpria linguagem. A escolha entre uma linguagem ou outra apenas uma questo de sintaxe.
7 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Isto possvel porque um programa escrito para .NET compilado em uma linguagem intermediaria chamada MSIL (Microsoft Intermediate Language). No importa qual linguagem em que voc codificou, o resultado, em termos de performance, qualidade, tamanho dos binrios etc. ser o mesmo. O arquivo compilado em MSIL normalmente resulta um uma DLL, denominada assembly.
Quando o programa for executado pela primeira vez, entre em cena o JIT (Just In Time Compiler), que vai fazer uma nova compilao do programa, desta vez de acordo com as especificaes do sistema operacional e do dispositivo em que o .NET Framework se encontra.
Desenvolver um sistema para o plataforma .NET, traz mais alugmas vantagens alm de das ficaram bvias nesta introduo. A mais importante que o seu programa vai rodar em um ambiente protegido e especifico, sem ter que se preocupar com as especificaes ou problemas do sistema operacinal. Toda a interao com este, como por exemplo, o gerencimento de memria, feita pelo .NET.
ASP.NET 1.X
Nos ultimos anos surgiram fantsticas IDEs para desenvolvimento de aplicaes Windows. Algumas permitiam que voc abrisse uma tabela qualquer, permitindo ainda a sua edio, sem sequer escrever uma linha de cdigo. Outras atravs de assistentes automatizavam tarefas poupando tempo e muitas dores de cabea. Surgiram ainda diversas ferramentas que prometiam a criao de aplicativos inteiros sem a necessidade de escrever uma linha de cdigo qualquer.
Porem no podemos dizer o mesmo para as aplicaes Web. Alm algumas frustadas tentativas, no existiu nenhum ambiente de alta produtividade como existiam para aplicaes convencionais. As linguagens, principalmente o ASP classico, semelhante ao
Visual Basic, era limitada sem os recusos de linguagens OO.
Ao planejar o .NET, a Microsoft vislumbrou um ambiente para aplicaes Web onde se pudesse desenvolver aplicaes no mesmo ambiente e com as mesmas facilidades de aplicaes convencionais, utilizando a mesma linguagem.
8 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Promessa cumprida: O .NET 1.x junto com o Visual Studio 2002 / 2003 proporcionou um ambiente para aplicaes WEB, totalmente integrado, com as facilidades s antes vistas em ambientes de aplicaes convencionais: WYSIWYG, Drag and Drop, Intellisense, recursos de depurao avanados etc. J era possivel exibir uma tabela numa aplicao WEB com duas linhas de cdigo, e sem escrever uma Tag HTML sequer!
ASP.NET 2.0
No h duvidas que a plataforma .NET 1.x e o ASP.NET 1.x mudaram a maneira como as aplies Web so desenvolvidas. Porm a equipe de desenvolvimento da plataforma percebeu que muito ainda poderia ser feito, principalmente no que diz respeito a produtividade, e esse foi o objetivo principal da equipe de durante seu desenvolvimento. Como resultado, houve uma melhora de produtividade em at 70% ! Vejamos algumas das melhorias do ASP.NET 2.0 em relao ao seu antecessor:
Mais de 50 novos Server Controls
Novas ferramentas adiminstrativas
Nova IDE do Visual Studio 2005
Site Navigation: Controles que facilitam a navegao em Web Sites
Master Pages: Agora possvel utilizar herana visual em aplicaes Web, o que na verso 1.x s era possivel com aplicaes Windows Forms.
Themes: Tornam mais facil o gerenciamento do visual de sua aplicao
Acesso a Dados: O ADO.NET embora extramente eficiente, era demasiadamente complexo. O Acesso a dados foi reformulado e simplificado.
Snippets: Partes de cdigos especificas que podem ser armazenadas para utilizao futura.
O ASP.NET foi o primeiro ambiente que permitiu que se desenvolvessem aplicaes convencionais ou para Web em uma mesma IDE, utilizando a mesma linguagem.
Normalmente voc no precisa ser um profundo conhecedor de HTML para desenvover uma aplicao Web no VS 2005. Porm um conhecimento bsico recomandado: sempre h necessidade de algum ajuste manual.
9 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
ASP.NET 3.5
As mudanas do ASP.NET 2.0 e 3.5 foram poucas, porm significativas. Na verdade o core engine das duas verses continua o mesmo. Para projetos em ASP.NET 3.5 o
ASP.NET AJAX Extensions passou a estar integrado a IDE do Visual Studio, no mais necessrio baixar e instalar separadamente. encontrado no assemblie System.Web.Extensions.dll.
Outra grande novidade, j h bastante esperada o LINQ. A Gap que existe entre dados relacionais e objetos j no um assunto novo, j recebendo inclusive artigos meus. J postei tambm alguns artigos tcnicos sobre LLBLGen e NHibernate. Agora o .NET avana nesse sentido com o LINQ. O LINQ no nenhuma novidade, porm agora integrado ao Visual Studio. A idia do LINQ tambm no nova, com esta tecnologia voc pode operar o banco de dados em uma linguagem nativa, como se tivesse gerando cdigo VB.NET ou C#. encontrado nos assemblies System.Core.dll, System.Data.Linq.dll, System.Xml.Linq.dll e System.Data.DataSetExtensions.dll.
Tambm h controles novos. Alm dos controles Ajax Extensions que na verso anterior deviam ser instalados separadamente, existem mais trs novos controles: ListView, DataPager e LinqDataSource. O Listview um controle de exibio de dados tabulares, semelhante ao Datagrid e GridView, porm com novas funcionalidades e maior controle sobre o resultado produzido. DataPager um controle que prove paginao de dados ao Listview. LinqDataSource mais um controle de acesso a dados, como ObjectDataSource e o SQLDataSource, porm utilizando o modelo LINQ descrito em sesso anterior.
Estrutura de uma aplicao ASP.NET 2.0 e 3.5
Nesta sesso apresento algumas consideraes sobre o estrutura de aplicaes ASP.NET 2.0 e 3.5, que como dito em seo anterior, permaneceram inalterados.
Voc j percebeu que muita coisa mudou entre o ASP.NET 1.x e seu predecessor. Uma das grandes propagandas no lanamento da primeira verso do ASP.NET era o modelo code-behind, onde apresentao e cdigo de servidor ficam armazenados em arquivos
10 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
fisicamente separados, tornando o cdigo mais limpo e intuitivo tanto para o designer quanto para o programador. Trabalhar com tudo em um nico arquivo at era possvel, porm desvantajoso.
No ASP.NET 3.5, embora o padro seja um arquivo nico, pode-se facilmente optar em trabalhar com arquivos separados, basta desmarcar a opo place code in separated file na caixa de dialogo de criao de um novo Web Form:
Este novo modelo denominado code-inline. Se voc optar por trabalhar com este modelo, seu cdigo de servidor vai estar separado entre tags Script. O grande problema na verso 1.x era que trabalhando com um nico arquivo perdamos alguns recursos poderosos de programao, como o Intellisense. Na verso 2.0 e 3.5 no h qualquer problema: tudo que funciona no modelo code-behind funciona tambm no code-inline.
Post-Back entre pginas
At o.NET 1.x um controle s poderia causar um post back para a prpria pgina. Agora esta limitao acabou, atravs da propriedade PostBackUrl, presente no boto de comando e similares, que permite que seja executa um postback para outra pagina Asp. Este novo recurso conhecido como Cross-Page Posting.
11 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Agora possvel inclusive ler valores de controles ou propriedades de pginas que deram origem ao postback. Esta fantstica inovao surgida no ASP.NET 2.0 permite tornar o cdigo mais limpo, mas otimizado, alm de reduzir a necessidade de utilizao de variveis de sesso, querystring e outros.
Pastas
A partir da verso 2.0 o ASP.NET uma aplicao Web deixou de ser orientada a projeto e passou a ser orientada a arquivos. Em conseqncia foram definidas uma srie de pastas com funes especificas, vamos ver as principais:
App_Code: Para armazenamento de classes
App_data: Armazena fontes de dados
App_Themes: Armazena um tema. Estudaremos temas mais adiante.
App_LocalResources: Armazena arquivos de recursos
Arquivos
Nesta sesso vamos ver os principais tipos de arquivos que uma aplicao ASP.NET pode conter:
Web.config: um arquivo contendo as configuraes da aplicao, formatado com XML.
.aspx: arquivo contendo a apresentao de uma pgina.
.vb ou .cs: arquivo com cdigo de servidor relacionado a uma pgina
Global.aspx: Arquivo contendo os eventos globais da aplicao.
.master: Arquivo contendo uma MasterPage.
.ascx: Arquivo contendo um WebUserControl
.css: Arquivo css
.resx: Arquivo de recursos
.sitemap: Arquivo contendo um mapa do site
.skin: Arquivo contendo um skin
12 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
2. Visual Studio 2008: O ambiente e as linguagens
Nesta seo vamos ver os principais compontentes da IDE do VS 2008.
A esquerda, por padro oculta, existe a Barra de Ferramentas, onde ficam agrupados por categoria os compontes padro do VS ou de terceiros instalados no ambiente. Para instalar um novo componente, basta clicar com o boto direito sobre a barra e selecionar Choose Itens. Voc pode tambm personalizar a sua barra de ferramentas da maneira que achar melhor.
A direita temos o Solution Explorer, que permite uma navegao rpida entre os arquivos de um projeto ou soluo.
Abaixo, a janela de propriedades, permite configurar as propriedades de um controle ou de um formulrio, bem como acessar eventos.
Entre as principais novidades do ambiente temos as notificaes de status da linha atravs de cores: Uma nova linha de cdigo ou cdigo alterado marcado como amarelo. Se a linha j foi salva sua cor muda para verde.
13 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Outra novidade so os Snippets: pedaos de cdigo pr fabricados para executar uma tarefa especifica. Tudo bem que isso no uma grande novidade e j foi utilizada em outras IDEs por a a fora, mas com certeza o recurso esta melhor do que nunca e poder lhe ajudar a poupar bastante trabalho. Para inserir um Snippet basta chama-lo no menu rpido sobre a rea de cdigo. Obviamente que voc tambm poder criar seus proprios snippets.
SINTAXE: VISUAL BASIC .NET e C#
Vamos introduzir os principais aspectos d a sintaxe de programao do VB.NET e do C#. Este no ser um estudo completo ou abrangente, para tal procure bibliografia especfica.
Comentrios
No C# comentrio de linha so feitos com duas barras. Comentrios em bloco so aberto com \* e fechados com *\.
No VB.NET Comentrios so inseridos com aspas simples no inicio da linha. O VB.NET no permite o comentrio de blocos de cdigo, a soluo comentar linha a
linha. Porm o Visual Studio possui em sua barra de ferramentas padro o comando
Comment out the selected lines que comenta um bloco de cdigo selecionado e
Uncomment the selected lines que remove os comentrios, a utilizao simples e intuitiva, e funcina em ambas as linguagens
este um comentrio vlido Dim i as Integer esta tambm um comentrio vlido
//este um comentrio vlido int x = 3; /* este tambm um comentrio vlido */
Lembre-se sempre que o C# diferencia entre caracteres maisculos e minusculos, o VB.NET no.
Voc j deve ter encontrado discusses ardentes na internet sobre C# ser melhor que VB.NET e vice-versa. A verdade que conhecendo os fundamentos da plataforma sabemos que o resultado exatamente igual.
14 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
No Visual Studio 2008 tambm possvel documentas seu cdigo sem a necessidade de instalar qualquer plug-in, basta adcionar trs aspas (vb.net) ou tres barras (C#) antes do procedimento. O VS automaticamente preenche o esqueleto do documento. Observe o exemplo abaixo:
''' ''' Funo para somar dois nmeros ''' ''' Primeiro nmero a somar ''' Segundo nmero a somar ''' Resultado da soma ''' By Fulano Public Function Somar(ByVal x As Integer, ByVal y As Integer) _
As Integer Dim z As Integer z = x + y Return z End Function
/// /// Funo para somar dois nmeros /// /// Primeiro nmero a somar /// Segundo nmero a somar /// Resultado da soma int Somar(int x, int y) {
int z;
z = x + y;
return z; }
O VS ainda pode gerar um diagrama de sua classe, basta clicar com o boto direito sobre o arquivo, e selecionar View Class Diagram
Tipos de Dados
Sendo o .NET um framework, no existem tipos de dados desta ou daquela linguagem. Os tipos so todos do .NET. Obviamente que existem diferenas de sintaxe na declarao e manipulao destas variaveis. Abaixo segue uma relao dos principais tipos de dados, para uma relao completa consulte a documentao do VS 2008:
Voc ainda pode criar comentrios no VB.NET utilizando Rem.
15 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Boolean
Verdadeiro ou falso
Char - caractere unicode de 16 bit
String - String
Byte
inteiro de 8 bit, sem sinal
UInt16 - inteiro de 16 bit, sem sinal
UInt32 - inteiro de 32 bit, sem sinal
UInt64 - inteiro de 64 bit, sem sinal
Int16
inteiro de 16 bit, com sinal
Int32 - inteiro de 32 bit, com sinal
Int64 - inteiro de 64 bit, com sinal
SByte - - inteiro de 8 bit, com sinal
DateTime
data e hora
Decimal
nmero decimal
Double
nmero de ponto flutuante com 64 bit
Single - nmero de ponto flutuante com 32 bit
Operadores
VB.NET C# And & Or | XOr ^ Not ! Is Nothing
== null
!= & + \ / \= /= Mod % = ==
Um valor nulo em VB.NET representado por NOTHING, em C# por null.
O tipo Int32 pode ser representado no VB.NET por Integer e int no C#.
16 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Variaveis e Constantes
No VB.NET para declarar uma varivel usamos a palavra DIM, seguido pelo nome da varivel e tipo:
Dim i as Integer
A sintaxe do C# semelhante ao do C++:
int z;
Podemos ainda declara diversas variaveis de um mesmo tipo numa unica declarao:
Dim i,j,k as Integer
int x, y, z;
Ou ainda variaveis de diferentes tipos:
Dim i,m as Integer, j,k as Single
int i, m; Double j,k;
Obviamente i e m sero do tipo inteiro, e j e K do tipo single.
possvel ainda incializar a varivel na sua declarao:
int z = 1;
Para declarar uma constante utilizamos a declarao Const:
Dim i as Integer = 1
Const x as integer = 1
17 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Enumeradores
Para declarar um enumerador usamos a declarao Enum
Voc opcionalmente pode inicializar cada menbro, se voc no o fizer, o primeiro menbro ser inicializado com zero e assim sucessimvamente.
Colees
Poderamos dedicar um longo captulo ao estudo de coleo, sendo nosso objetivo fazer uma introduo a parte de sintaxe, veremos apenas arrays:
const int x = 1;
Public Enum Semana Domingo Segunda Tera Quarta Quinta Sexta Sabado End Enum
enum Semana { Domingo, Segunda, Tera, Quarta, Quinta, Sexta, Sabado };
Enum Semana Domingo = 1 Segunda = 2 Tera = 3 Quarta = 4 Quinta = 5 Sexta = 6 Sabado = 7 End Enum
enum Semana { Domingo = 1, Segunda =2, Tera =3, Quarta =4, Quinta =5, Sexta =6, Sabado =7 };
Dim MeuArray(1) As String MeuArray(0) = "Um" MeuArray(1) = "Dois"
18 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Ao contrrio do legado VB, um array possui sempre ndice iniciado em zero, portanto um array declarado com (1), ter duas posies.
Estruturas de deciso
O classico if no poderia faltar. A sintaxe semelhante as suas linguagens legadas:
Obviamente que a intruo else opcional.
Outra forma de controle de fluxo conhecido o Select (VB.NET) ou Switch (C#):
string[] MeuArray = new string[1]; arr[0] = "Um"; arr[1] = "Dois";
Dim Nome As String = "ASP.NET" If Nome = "VB.NET" Then MessageBox.Show("Certo!") Else MessageBox.Show("Errado!") End If
string Nome = "ASP.NET"; if (Nome == "C#") { MessageBox.Show("Certo!"); } else { MessageBox.Show("Errado!"); }
Dim Nome As String = "VB.NET" Select Case Nome Case "VB.NET"
MessageBox.Show("Certo!") Case "C#"
MessageBox.Show("Errado!") Case Else
MessageBox.Show("?") End Select
string Nome = "C#";
19 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Note que no C# devemos usar a palavra break para quebrar o fluxo
Laos
Vamos estudar trs estruturas de laos: For, while e laos em colees.
O lao for tem a sintaxe semelhante em qualquer linguagem:
Dim i As Integer For i = 1 To 10
MessageBox.Show(CStr(i)) Next i
for (int i = 0; i < 10; i++)
MessageBox.Show(Convert.ToString(i));
A sintaxe do C# nos permite facilmente fazer um loop regressivo, basta alterarmos o ltimo argumento de i++ para i--, e obviamente mudarmos a condio:
for (int i = 0; i < 10; i++)
MessageBox.Show(Convert.ToString(i));
No VB.NET podemos conseguir o mesmo efeito utilizando a palavra chave Step:
Dim i As Integer = 0 For i = 10 To 1 Step -1
MessageBox.Show(CStr(i)) Next i
Existem laos While com teste de condio no inicio da sentena ou no final, neste ltimo o lao executa sempre uma primeira vez, independente do resultado da avaliao. Vamos ver exemplos do primeiro caso:
switch (Nome){
case "VB.NET":
MessageBox.Show("Certo!");
break;
case "C#":
MessageBox.Show("Errado!");
break;
default:
MessageBox.Show("?");
break; }
20 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Dim i As Integer = 0 Do While i < 5
MessageBox.Show(CStr(i))
i += 1 Loop
int i = 0; while (i
21 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Procedimentos e funes
Em VB.NET uma funo comea com a palavra reservada function e termina com o tipo do dado de retorno. J no C# inicia com o tipo do dado de retorno:
Function Somar( x As Integer, y As Integer) _
As Integer Dim z As Integer z = x + y Return z End Function
int Somar(int x, int y) {
int z;
z = x + y;
return z; }
O retorno inidicado pela palavra-chave return ou pelo prprio nome da funo.
Um procedimento que no retorna valor em VB.NET inicia com a palavra chave Sub, e em C# com void:
Sub Somar( x As Integer, y As Integer) _
As Integer Dim z As Integer z = x + y End Function
void Somar(int x, int y) {
int z;
z = x + y; }
Visibilidade ou Scopo
A passagem de parametros por padro ocorre por valor. Para indicar um parametro a ser passado por referencia, utilize ByRef no VB.BET e ref no C#.
22 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
A visibilidade de um procedimento, classe, inferface etc. definada atravs das palavras reservadas a seguir:
Public / public: acessvel de qualquer lugar do projeto ou de instancias da classe Private / private: Acessvel apenas dentro do mesmo contexto; Friend / internal: Acessivel apenas dentro do projeto; Protected / protected: Acessivel apenas dentro da classe ou de uma classe derivada; Protected Friend / Protected Internal: Acessivel apenas dentro da classe derivada ou do mesmo projeto;
Tratamento de excees
O tratamento de excees ser surpresa apenas para quem esta comeando agora a conhecer o VB.NET, que com o lanamento do linguagem ganhou uma forma estruturada de tratamento de erro semelhante as demais linguagens OO. o adeus ao On error go to.
O tratamento de erro formando por uma estrutura Try...Catch..Finally. Entre o Try e o Catch deve ser colocado o cdigo que voc quer proteger de uma exceo. Entre Catch e Finnally o cdigo a ser executado no caso de ocorrer uma exceo, e finalmente aps Finnally algum cdigo que voc queira que obrigatriamente seja executado, ocorrendo ou no uma exceo, geralmente usado para liberar algum recurso alocado. Vale lembrar que voc pode usar apenas parte da funcionalidade do bloco, por exemplo, se voc que apenas tratar uma exceo, pode contruir um bloco contendo apenas os comando try...catch. Por outro lado se voc quer apenas garantir que um recurso seja liberado, como uma conexo com o banco de dados pro exemplo, voc pode fazer uso apenas do bloco try...finally.
Outra caracteristica importante que as classes de exceo so executadas da mais especifica para a menos especifica, isto permite um tratamento de erros mais robusto e eficaz. Normalmente voc deve terminar seu tratamento com a classe Exception, que menos especfica e que da origem a todas as demais.
Ao declarar algo sem a visibilidade, por padro ser private.
23 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Try
My.Computer.FileSystem.CopyFile("Aspnet.pdf", "Aspnet.bkp") Catch ex As System.IO.IOException
MessageBox.Show("Ocorreu um erro na cpia do arquivo") Catch ex2 As Exception
MessageBox.Show("Ocorreu um Erro desconhecido") End Try
try {
string s = null; } catch (ArgumentNullException s) {
MessageBox.Show("Ocorreu um erro na string"); } catch (Exception r) {
MessageBox.Show("Ocorreu um Erro desconhecido"); }
With
O with, que no tem equivalente no C#, permite omitir o nome de um objeto quando o mesmo utilizado em diversas linhas.
With GridView1
.Caption = "GridView"
.EditIndex = 0
.Enabled = False End With
Orientao a Objetos
Vamos tambm apresentar alguns aspectos da sintaxe da criao de classes no VB.NET e no C#. Porm antes preciso conhecer o conceito de NameSpaces.
NameSpaces uma estrutura simples, porm muito eficiente de organizar seu cdigo. Por exemplo, uma suposta empresa GoodSoftware pode definir que todas suas classes tero como NameSpace raiz GoodSoftware. Abaixo deste existiro os NameSpaces ERP, CRM e Global. O NameSpace ERP abrigaria as classes de seus novo sistema ERP, o CRM idem, e o Global classes que para serem utilizadas em ambos os projetos. Dentro de cada um destes NameSpaces possvel criar n outros. Outra importante
24 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
vantagem do seu uso reduo de problemas com conflitos com nomes repetidos de classes ou mtodos.
Abaixo vemos a declarao bsica de uma classe de Nome Class1, dentro de um NameSpace
Namespace GoodSoftware Public Class ERP '...
End Class End Namespace
namespace GoodSoftware { public class ERP { // } }
Um construtor de uma classe em VB.NET se define com a palavra chave New, j em C# deve ter no mome da classe
Public Sub New() ...
End Sub
public Class1 () {
// }
Obviamente que voc pode criar um construtor com passagem de parametros.
J as propriedades so bastante singular em cada linguagem:
Voc no obrigado a criar uma classe dentro de um NameSpace.
No preciso existir relao entre nomes de classes e namespaces com o nome fisico do arquivo. Voc pode inclusive colocar diversas classes ou namespaces dentro de um mesmo arquivo.
25 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Public Property Nome() As String
Get
Return Pnome
End Get
Set(ByVal value As String)
Pnome = value
End Set End Property
public String Nome {
get { return Pnome; }
set { Pnome = value; } }
Caso voc deseje criar um mtodo que por algum motivo no precise ou no deva ter sua classe instanciada, basta voc acrescentar a palavra chave shared no VB.NET ou static no C#, sempre aps a declarao de visibilidade do mtodo:
Public Shared Function Somar(ByVal x As Integer, ByVal y As Integer) _ As Integer
Dim z As Integer
z = x + y
Return z End Function
public static int Somar(int x, int y) {
int z;
z = x + y;
return z; }
A herana de uma classe definida pela palavra chave inherits em VB.NET e em C# atravs da notao : classe pai
Public Class Class2 Inherits Class1 End Class
Uma propridade pode ser apenas leitura ou apenas escrita. Alm de inicar estas caracteristica na declarao da propriedade, voc dever omitir as sentenas get e set, respectivamente.
Lembre-se que um mtodo definido com shared / static, no pode usar qualquer recurso da classe, como por exemplo uma variavel privada ou mesmo, uma propriedade ou um outro mtodo.
26 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
class Class2: Class1 { }
Abaixo alguns outros recursos de OO do .NET, no vou demonstrar exemplos porque extrapolam o objetivo bsico desta sesso. A primeira palavra a notao em VB.NET e a segunda em C#:
NotInheritable / sealed: Tambm conhecido com Classe Fechada , indica que uma classe no pode ser usada como base, ou seja, nenhuma outra classe poder herd-la
MustInherit / abstract: Define uma classe abstrato, onde apenas uma classe filho poder ser instanciada.
Overloads: permite que um mtodo seja sobrecarregado, ou seja, que possa haver mtodos com a mesma funo, porm com assinaturas diferentes. O uso do termo desnecessrio tanto em VB.NET quanto em C#, pois o ambiente entende que mtodos com o mesmo nome porem com assinaturas diferentes esto sobrecarregados.
Overridable / virtual: Indica que uma classe filho deve programar uma nova verso do mtodo.
Overrides / override: Utilizado para sobrescrever uma implementao na classe pai.
MustOverride: Em uma classe marcada como MustInherit. Indica que o mtodo ou propriedade deve no foi implementado na classe pai e deve ser implementado na classe derivada.
Interfaces
Interfaces um recurso que permite criar uma padronizao maior entre classe. Uma interface uma assinatura , que compreende nada mais que mtodos e propriedades ocas . Uma classe que programe determinada interface deve obrigatoriamente seguir
essa assinatura. Voc pode definir que determinada classe implemente determinada interface para ter uma certa funcionalidade.
Para se referir a classe base, utilize MyBase no VB.NET ou base no C#, seguido do nome do mtodo ou propriedade.
27 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Confuso? Vou citar um exemplo: voc pode conectar tanto um array quanto um SqlDataSource a um GridView, pois ambos implementam a interface System.Collections.IEnumerable.
Interface Interface1 Sub Metodo1() Function Metodo2() As Integer End Interface Public Class UsaInterface Implements Interface1 Public Sub Metodo1() Implements Interface1.Metodo1 '
End Sub Public Function Metodo2() As Integer Implements Interface1.Metodo2 '
End Function End Class
public interface Interface1 { void Metodo1(); int Metodo2(); }
public class UsaInterface : Interface1 { public void Metodo1() { //
} public int Metodo2() { // } }
Utilizando o IIS
Como um ambiente de alta produtividade, O VS vai criar automaticamente pra voc todas as estruturas que precisam ser implementadas na classe, no momento que voc informar que deseja utilzar determinada interface.
O .NET no suporta herana multipla, porm uma classe pode implementar diversas interfaces.
Certifique-se que o IIS esta devidamente instaldo e rodando.
28 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Ao contrario do seu entecessor, o VS 2005 e 2008 vem com um pequeno servidor Web embutido. Porm devido as limitaes deste, vamos trabalhar com IIS. Para criar uma nova aplicao usando o IIS siga os seguintes passos:
Na IDE do VS selecione File / New Web Site; Na caixa de dialogo New Web Site selecione ASP.NET Web Site;
Clique em Browse;
Na caixa de dialogo Chose Location, selecione Local IIS; Selecione Site da Web Padro; Clique em Create New Web Aplication; Digite um nome para sua aplicao, no exemplo Teste;
29 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Clique em Open; De volta a new Web Site, clique em Ok.;
30 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
3. Web Forms
Um Web Form uma pagina de sua aplicao. Na IDE do VS ele se comporta de forma semelhante a um Windows Form: Uma rea onde voc pode arrastar e soltar controles visuais, codificar eventos e configurar propriedades que vo regrar seu comportamento. Fisicamente, um Web Form composto por um arquivo com extenso aspx e, dependendo do modelo adotado, poder ou no estar vinculado a ele um arquivo vb ou cs, com a codificao para execuo no servidor.
Abaixo voc v o cdigo gerado pelo prprio VS na criao da um Web Form:
Untitled Page
Nesta pgina voc alguns dos principais elementos que formam uma pagina HTML padro, como as tags Html, Head, Body, Form e Title. Todos controles e todo contedo de apresentao de seu formulrio, vai estar entre as Tags Body.
Diretivas
Na primeira linha da pgina temos uma diretiva de pgina. Uma diretiva representada pelo smbolo
31 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Abaixo veremos as principais diretivas existentes no ASP.NET 3.5:
@Control: Diretiva de um User Control (arquivo ascx)
@Master: Diretiva de uma Mster Page
@OutPutCache: Diretiva de controle de cach
@Assembly: Vincula um assembly a pgina
@Import: Importa um namespace especificado
@Page: Diretiva de um Web Form (arquivo aspx
Cada diretiva pode conter n atributos. Os atributos so configuraes que na verdade ditam as funcionalidades da diretiva. Veremos a seguir os principais atributos da diretiva @page:
AutoEventWireUp: Determina que os eventos de uma pgina sejam disparados automaticamente
ClassName: Especifica o nome da classe relacionada a pgina
CodeFile: Especifica o arquivo code-behind da pgina
Culture: Especifica as configuraes de cultura da pgina
Debug: Compila a pgina com os smbolos de depurao
EnableSessionState: Indica se permitido armazenamento de sesso na pgina
EnableTheming: indica se permitido o uso de temas na pgina
EnableViewState:Indica se o viewstate ser mantido na pgina
Language: Defina a linguagem em que a pgina codificada
SmartNavigation: Habilita os recursos do SmartNavigation na pgina
Theme: Defini um tema especifico para a pagina
ValidateRequest: Indica se a requisio ser validada. Quando este atributo esta com verdadeiro, se existir algum contedo potencialmente perigoso postado na pgina, ser gerada uma exceo.
No arquivo web.config ou mesmo at no machine.config, podemos configurar muitos dos atributos que tambm so configurveis a nvel de pagina. Normalmente a configurao atravs de diretiva de pgina sobrescreve a definida em um arquivo de configurao.
32 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
33 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
4. Controles Em seo posterior veremos os novos controles adicionados no ASP.NET 3.5, que como vimos na seo de novidades desta verso, so poucos.
No ASP.NET 2.0 foram adicionados de cerca de 50 novos controles de servidor. Alguns presentes na verso 1.x, como o DataGrid, no esto mais disponveis na caixa de ferramentas, porm podem ser facilmente adicionados.
Voc pode criar uma aplicao utilizando basicamente dois grandes grupos de controles: controles HTML, que so os controles padro conhecidos e Server Controls, ou controles de servidor.
Server Controls so controles ricos em funcionalidade, que podem ter seus eventos ou propriedades manipulados no cdigo executado no servidor. Todo controle de servidor codificado atravs de uma tag ASP, que no HTML padro que conhecemos. Em tempo de execuo, o ASP.NET renderiza esta tag em HTML otimizado para o navegador em que a aplicao executada.
Por exemplo, um dos controles mais simples o Label. Ao colocar um Label em um WebForm o VS gera o seguinte cdigo:
Ao executarmos a aplicao, a tag ASP:Label renderizado em uma tag span:
No estudaremos detalhadamente todos os Server Controls.
Voc pode criar aplicativos usando apenas controles HTML, porm tenha um bom motivo para fazer isto.
Voc pode gerenciar a apresentao de seu site manualmente, se preferir.
Label
34 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
O atributo runat=Server no define que o controle um controle de servidor, mas sim que ele ser visvel no cdigo executado no servidor. Isto significa que se adicionarmos este atributo a um controle HTML, este tambm poder ser manipulado no servidor, porm de forma mais pobre:
Acessando eventos e propriedades de controles
Na caixa de propriedades, clicando no boto Events , voc tem uma relao de todos os eventos possveis para um determinado controle. Para que o VS crie automaticamente um manipulador para o evento basta dar um duplo clique no nome. Alguns manipuladores podem ser criados quando clicamos sobre o prprio controle, como o evento Click de um Button:
Protected Sub Button1_Click(ByVal sender As Object,ByVal e _ As System.EventArgs) Handles Button1.Click
End Sub
protected void Button1_Click(object sender, EventArgs e) {
}
Junto com o evento so passadas duas propriedades, sender, do tipo object, que contem o objeto que disparou o evento, e e, do tipo EventArgs, que contem algumas propriedades especificas do evento.
Ler ou alterar propriedades de um controle feito no modelo controle.propriedade, como nos exemplos abaixo:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e _ As System.EventArgs) Handles Button1.Click
Button1.Text = "Gravar"
Button1.ToolTip = "Clique Aqui para Gravar" End Sub
No estudaremos controles HTML.
35 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
protected void Button2_Click(object sender, EventArgs e) {
Button1.Text = "Gravar";
Button1.ToolTip = "Clique Aqui para Gravar"; }
Voc pode definir que mais de um controle dispare um mesmo manipulador de evento, internamente basta voc verificar qual foi o controle que causou o evento. De uma maneira geral, para ambas as linguagens, basta voc selecionar o evento no dropdown na caixa de propriedades. O interessante como o VS trata isto em tempo de design de forma to diferenciada. No C# o nome do manipulador do evento colocada no arquivo ASPX, no atributo OnClick. No VB.NET, adicionado o nome do controle ao grupo handles, ao final da assinatura do evento. O resultado em tempo de execuo obviamente o mesmo.
Propriedades Comuns
Algumas propriedades so comuns, se no a todos, mas a maioria dos controles. Vamos v-las agora:
ID: O nome do controle, deve ser nico
BackColor: Cor de fundo do controle
BorderColor: Cor de Borda do Controle
BorderStyle: Estilo da borda do Controle
BorderWidt: Largura da borda do controle
CssClass: Indica a classe CSS a ser aplicada no controle
Enabled: indica se o controle esta habilitado
EnableTheming: Indica se o tema do controle estar ativo
EnableViewState: Indica se o controle vai armazenar seu estado no viewstate da pagina
Font: Fonte do controle
SkinID: Indica o ID do skin a ser utilizado. Skins sero estudados mais adiante
Text: Representa o texto que ser exibido ao usurio da aplicao
ToolTip: a dica que ser exibida ao usurio quando este posicionar o mouse sobre o controle.
36 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Uso de HotKeys
Duas propriedades novas e interessantes, que esto presentes em alguns controles, so AcessKey e AssociatedControlID. Com a primeira definimos uma tecla de atalho para o controle, que no navegador e acionado junto com a tecla ALT. J com AssociatedControlID podemos definir qual o controle vai receber o foco no caso da combinao de teclas ser acionadas. Este recurso conhecido como HotKeys.
Vamos estudar agora os trs principais controles de servidor, que formam um conjunto bsico para a criao de qualquer aplicativo.
Label
Um controle simples, porm poderoso, que nos permite exibir algum texto em uma pgina Web. Todas suas propriedades podem ser manipuladas no cdigo gerado no servidor.
definido pela a tag ASP:Label e quando executado renderizado em uma tag span:
TextBox
O textbox um controle de edio simples. Atravs da propriedade TextMode podemos utiliz-lo ainda para receber senhas ou mesmo transforma-lo em um controle com mltiplas linhas. Uma novidade a propriedade AutoCompleteType, que pode receber apenas valores pr-definidos. Ao preencher um segundo controle com o mesmo valor para esta propriedade, o navegador dever sugerir o preenchimento do valor informado no primeiro campo.
definido pela a tag ASP:TextBox e quando executado renderizado em uma tag input do tipo text ou password ou ento textarea, de acordo com a propriedade textmode.
Alguns exemplos de codificao de controles, mostram primeiro em tempo de design (ASP) e em seguida em tempo de execuo (HTML) .
span id="Label1">ASP.NET 3.5 Rules!!
37 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Button
O button um boto de comando bsico. Sua principal funo causar um post back para a execuo de algum cdigo no servidor. O principal evento Click, que, obviamente, disparando quando clicamos no boto. renderizado em uma tag input do tipo submit.
Uma importante propriedade a PostBackUrl, que indica para qual pgina ser executado o post back.
Para exemplificar, o cdigo abaixo l a um TextBox de um formulrio que originou o PostBack:
LinkButton
O controle linkbutton uma mistura de boto de comando com HyperLink. Sua aparncia de um Link, seu comportamento e suas propriedades o assemelham a um Button. No existe propriedade NavigateUrl, o redirecionamento deve ser codificado no post back ou atravs da propriedade PostBackUrl.
Nos bastidores, o LinkButton renderiza uma tag a, cujo atributo Href, ao invs de conter uma URL, dispara uma funo Java Script gerada pelo ASP.NET.
Normal Senha MultiLine
MultiLine
Dim Nome As String = CType(PreviousPage.FindControl("Nome"), _ TextBox).Text
LinkButton
38 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
ImageButton
Um ImageButton um boto de comando onde podemos adicionar uma imagem para exibio. Possui todas as funcionalidades do Button, mais a propriedade ImageURL onde definimos a imagem. Em tempo de execuo renderizado como Input do tipo Image.
HyperLInk
O hyperlink permite criar links de navegao, sua propriedade mais importante NavagateURL, que valor para a atribuo HREF. um controle simples que renderizado com uma tag a. Seu poder maior esta na possibilidade de, por exemplo, definir a URL dinamicamente no cdigo do servidor. Atravs de uso de HotKey pode-se ainda facilitar a navegao na pagina. A propriedade text define o texto de exibio, j ImageUrl pode definir uma imagem a ser exibida ao invs do texto.
CheckBox
O checkbox gera um controle HTML input do tipo checkbox
LinkButton
Clique Aqui
Clique Aqui
39 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
RadioButton
O RadioButton gera um controle HTML input do tipo radio
Image
O controle Image deve ser utilizado para exibio de Imagens. A imagem a ser exibida deve ser definida atravs da propriedade ImageUrl.
DropDownList e ListBox
O DropDownList e ListBox so controles altamente poderoso. Suas propriedades e eventos trazem recursos que s poderiam ser obtidos com muita mo de obra em uma aplicao WEB. A propriedade AutoPostBack, causa um post back automtico ao servidor quando um valor selecionado. Os controles podem ter seus itens adicionados em tempo de design ou de execuo, atravs da propriedade Itens. Tambm possvel vincul-lo a uma fonte de dados qualquer, que pode ser um array, um dataset ou mesmo um SqlDataSource, s para citar alguns.
Para cada item possvel ler e escrever um texto e um valor, armazenados nas propriedades text e value, respectivamente. Isto muito til, por exemplo, para recuperar o cdigo de um item selecionado pelo usurio.
O exemplo abaixo adiciona um item a um DropDownList:
DropDownList1.Items.Add("Selecione uma opo")
40 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
DropDownList1.Items.Add("Selecione uma opo");
Para recuperar o valor da propriedade text bem como value basta ler as propriedades especficas:
Dim s As String = DropDownList1.SelectedValue Dim t As String = DropDownList1.SelectedItem.Text
string s = DropDownList1.SelectedValue; string t = DropDownList1.SelectedItem.Text;
O evento SelectedIndexChange executado quando um item do controle selecionado. Se a propriedade AutoPostBack estiver marcada como verdadeira, um postback executado imediatamente, caso contrrio o evento s ser executado no prximo postback.
Existem ainda diversos mtodos interessantes, como itens.clear, que limpa os itens, e propriedades, como itens.count, que retorna o nmero de itens no controle.
CheckBoxList e RadioButtonList
Os controles CheckBoxList e RadioButtonList em tempo de design so apresentados como um conjunto de controles CheckBox e RadioButton, que podem ter suas propriedades gerenciadas mais facilmente e conectados a uma fonte de dados qualquer. Em tempo de execuo, o ASP.NET renderiza cada controle como diversos controles input do tipo checkbox ou radiobutton.
No exemplo abaixo o cdigo verifica se um determinado item de um
If CheckBoxList1.Items(0).Selected = True Then ''
End If
if (CheckBoxList1.Items[0].Selected==true) { // }
41 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Calendar
O Calendar um calendrio que renderizado utilizando uma tag table, e na sua forma mais simples tem pelo menos 7 KB de texto. excelente para exibio e entrada de datas. Possuiu um conjunto poderosssimo de propriedades, mtodos e eventos que permitem praticamente exibi-lo de qualquer forma imaginada.
Entre seus eventos mais significativos, temos o SelectionChange, que disparado quando ocorre uma alterao na seleo do calendrio, e VisibleMonthChange, que ocorre quando o ms visvel no calendrio alterado. A propriedade SelecteDate nos permite ler a data selecionada.
No exemplo abaixo um label exibe a data selecionada pelo usurio:
Protected Sub Calendar1_SelectionChanged(ByVal sender As _ Object, ByVal e As System.EventArgs) Handles _ Calendar1.SelectionChanged Lbldata.Text = String.Format("A data selecionada {0:d}",_
Calendar1.SelectedDate) End Sub
protected void Calendar1_SelectionChanged(object sender, EventArgs e) {
Lbldata.Text = String.Format("A data selecionada {0:d}",
Calendar1.SelectedDate); }
Atravs das propriedades SelectionMode podemos definir se o usurio poder selecionar um nico dia, uma semana, um ms inteiro ou nada. Caso ele possa selecionar, por exemplo, uma semana, podemos recuperar os dias selecionados atravs de um lao for each, que percorre a coleo de objetos DateTime da propriedade SelectedDates:
Dim s As System.DateTime For Each s In Calendar1.SelectedDates
ListBox1.Items.Add(String.Format("Data Selecionada {0:d}", s)) Next
42 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
foreach (System.DateTime s in Calendar1.SelectedDates) {
ListBox1.Items.Add(String.Format("Data Selecionada {0:d}", s)); }
AdRotator
O AdRotator nos permite incluir um banner em nosso site, onde o prprio ASP.NET atravs de um arquivo de configurao, vai cuidar da rotatividade das exibies de imagens. O segredo todo est em um arquivo de configurao, que pode ser um XML ou mesmo uma tabela de banco de dados.
Para testar este controle, crie um arquivo XML dentro do diretrio App_Data de sua aplicao (se no existir o diretrio, crie-o tambm), com o seguinte texto:
~/imagens/cafezinho.bmp http://www.cafezinho.com Caf Caf 40 ~/imagens/deserto.bmp http://www.deserto.com Deserto Site Deserto 20
Certifique-se que voc tem uma pasta imagens com as imagens informadas. Voc pode configurar os parmetros de acordo com sua preferncia: NavigateUrl a URL para qual o usurio ser direcionado quando clicar no banner, AlternateText o texto a ser exibido no local da imagem. Impressions representa o nmero de impresses do banner. No exemplo acima, note que o primeiro banner dever aparecer em dobro.
Para vincular o seu AdRotator ao arquivo XML basta inform-lo na propriedade AdvertisementFile.
Um arquivo XML sensvel a caracteres maisculos e minsculos.
43 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
View e MultiView
Mais uma novidade surgida no ASP.NET 2.0. Provavelmente voc j necessitou que parte de sua aplicao ficasse invisvel em determinados momentos. Claro que isso no era uma tarefa impossvel, mas com os controles MultiView e View isto ficou mais
simples.
A idia : Dentro de um Multiview voc agrega um ou mais Views. Em cada um dos Views voc coloca controles conforme a necessidade. A partir da s determinar qual View estar visvel atravs da propriedade ActiveViewIndex.
MultiView1.ActiveViewIndex = 0
MultiView1.ActiveViewIndex = 0;
Wizard
Continuando com as novidades, o Wizard um assistente para pginas Web, onde voc pode determinar passos (Steps). Em cada Step voc tem uma rea onde pode colocar seus controles conforme a necessidade.
Entre os eventos tempos NextButtonClick, que disparado sempre que o usurios clicar no boto Next, FinishButtonClick, disparado no encerramento, e CancelButtonClick, disparado ao final.
O mais interessante de tudo que Wizard mantm estado de tudo o que colocado em seus passos. Isto significa que voc pode fazer o processamento dos dados ao final do assistente.
O controle totalmente configurvel, desde aparncias at texto dos botes.
Controles de validao
44 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
O ASP.NET desde sua primeira verso tem integrador alguns controles que permitem validar entradas do usurio, tanto no cliente como no servidor, de forma simples e rpida.
A partir da verso 2.0 foi inclua a propriedade ValidationGroup, que permite que agrupemos grupos diferentes de validao em um mesmo WebForm. Na verso anterior isto era um problema, ou fazamos a validao manualmente ou dividamos a nossa lgica de negocio em dois formulrios diferentes. Na verso 3.5 no houveram novidades em relao aos controles de validao.
Os controles de validao so:
RequiredFieldValidator: Permite validar se um controle foi preenchido.
RangeValidator: Permite verificar se o valor informado esta entre determinado intervalo.
RegularExpressionValidator: Permite validar o valor informado com uma expresso regular
CompareValidator: Permite comparar dois valores.
CustomValidator: Permite que customizemos nossa expresso de validao.
Um controle de validao vai exibir uma mensagem caso a validao falhe. Com o controle ValidationSummary podemos agrupar as mensagens de todos os controles em um nico local ou numa mesma caixa de dialogo.
Um controle de validao tem duas propriedades para exibio de mensagens: Text e ErrorMessage. Se voc utilizar um ValidationSummary voc pode trabalhar com as duas: A mensagem em ErrorMessage ser exibida no ValidationSummay, e text no proprio controle de validao (um * por exemplo).
Se voc quer garantir que um controle tenha um valor preenchido e seja, por exemplo, um inteiro maior que zero, voc ter que usar alm de um RangeValidator um RequiredFiledValidador, apenas este ltimo obriga o preenchimento do valor.
45 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Para criar grupos de validao, basta escolher um nome para o grupo e preencher as propriedades ValidationGroup tanto dos controles a serem validados quanto dos controles de validao.
Se voc quiser causar um post back sem disparar os validadores, basta setar a propriedade CausesValidation do controle para False.
Para obrigar o preenchimento de um textbox:
Coloque num formulrio um controle TextBox, um RequiredFieldValidator e um ValidationSummary e um Button; Configure a propriedade ControlToValidade do RequiredFieldValidator para o TextBox adicionado no furmaulario; Preencha a propriedade text do RequiredFieldValidator para *, e ErrorMessage para Preenchimento Obrigatrio ;
Configure a propriedade ShowMessageBox do ValidationSummary para true, e ShowSummary para false;
Rode a aplicao; Clique no boto sem preencher qualquer informao no textbox.
46 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Por fim, para verificar tambm no servidor se todas as validaes foram feitas, verifique a propriedade isvalid da pgina.
5. Master Pages
comum em aplicaes convencionais ou mesmo Web a necessidades de criarmos partes de contedo que sero exibidas em todas ou pelo menos em diversas pginas. No ASP clssico isso era resolvido da seguinte forma: Voc desenvolvia o contedo separadamente e sua incluso era feito onde necessrio atravs de uma tag Include.
No ASP.NET 1.1 surgiu uma novidade: os chamados Web User Controls, que so arquivos com a extenso ascx, que podiam ser programados na IDE do Visual Studio e adicionados a qualquer Web Form. Trouxe significativas vantagens em relao ao uso
47 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
do include, como o fato da pagina host ter a possibilidade de ler ou alterar valores de controles ou propriedades.
Sua grande desvantagem era que no possua herana visual como j h um longo tempo era possvel em aplicaes convencionais: O user control em tempo de design eram representados na IDE do VS como um boto cinza.
No ASP.NET 2.0 uma das grandes novidades apresentadas e que obviamente continuam disponveis na verso 3.5 so as Master Pages, que trazem finalmente a herana de contedo de forma visual.
Uma MasterPage um arquivo com extenso master. Pode ser criada no IDE do VS no modelo code-behing ou code-inline, assim como um Web Form. Sua estrutura bsica tambm muito parecida com um Web Form:
Untitled Page
A principal diferena a diretiva de compilao @Master, no lugar de @Page. Esta diretiva informa ao ASP.NET durante o processo de compilao que trata-se uma Master Page.
Uma pgina aspx que utiliza uma Master Page chamada de pgina de contedo (Content Page). Uma pgina de contedo no contem os elementos que formam uma pgina HTML comum, pois estes sero herdados da Master Page. Numa Master Page,
48 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
as reas onde uma pagina de contedo tero disponvel para exibir seu contedo so definidas atravs de controles de servidor contentplaceholder. No cdigo acima voc pode ver um controle contentplaceholder criado por padro na criao da MasterPage.
Criando uma Master page
Criar uma Master Page no Visual Studio simples: Na caixa de dialogo Add New Item Selecione Master Page, defina um nome para a pgina. O VS cria a MasterPage com o nome escolhido.
Se voc optou pelo modelo code-behind, sero criados dois arquivos: um arquivo master e um vb ou cs, conforme a linguagem escolhida. Se a opo foi code-inline, ser criado apenas o arquivo .master.
Utilizando uma Mater Page
Definir a(s) pgina(s) de contedo simples e pode ser feito quatro maneiras diferentes:
Durante a criao da pgina, na caixa de dialogo Add New Item, marque a opo Select Master Page
49 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Ser exibida a caixa de dialogo Master Page, que exibe as Master Pages disponveis no projeto:
Baste selecionar a pgina Master e clicar em Ok.
A segunda atravs da prpria pagina Master, selecionando a opo Add Content Page. Ser criada uma pgina de contedo em branco. Voc no poder escolher o nome da pgina no momento da sua criao.
A terceira de forma manual. Crie um Web Form normalmente, remova todo o HTML gerado, com exceo da diretiva de pgina. Adicione a diretiva de pgina o atributo MasterPageFile, que indica que esta uma pgina de contedo que utiliza a Master Page especificada no atributo.
Finalmente, a quarta e ltima, e em tempo de execuo:
50 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Protected Sub Page_PreInit(ByVal sender As Object, ByVal e _ As System.EventArgs) Handles Me.PreInit
Page.MasterPageFile = "~/MasterUm.master" End Sub
protected void Page_PreInit(object sender, EventArgs e) {
Page.MasterPageFile = "~/MasterUm.master"; }
Obviamente que esta ltima forma nos priva dos beneficios da herana visual.
Trabalhando com uma Master Page
Nesta sesso vamos demonstrar de maneira prtica como tirar proveito da utilizao de uma Master Page.
Crie uma nova aplicao ASP.NET;
Crie uma nova Master Page;
Defina o layout da Master Page de acordo com a figura abaixo:
A defninio de uma pagina Master em tempo de execuo deve ser feito no evento PreInit da pgina.
Este no um curso de Web Design, portanto no perca tempo ou se preocupe com a aparncia de suas atividades prticas.
51 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Para os quatro controles da esquerda, que devero funcionar como HyperLinks, utilize controles de Servidor HyperLinks, defina a propriedade text de cada um como Desentupimento, Hidrulica, Limpeza e Hidrojateamento. A propriedade NavigateUrl de cada um deve ser definida pelo mesmo contedo da propriedade text mais a exteso aspx, por exemplo: Desentupimento.aspx.
Crie quatro pginas de contedo com os nomes especificados nas propriedades NavigateUrl acima, especificando como Master Page a pgina criada.
Defina um contedo especifico para cada pgina de contedo, conforme exemplo abaixo:
Na rea Content da pgina de contedo voc pode trabalhar livremente: adicionar controles, eventos etc.
52 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Defina uma das pginas de contedo criada como pgina inicial e rode a aplicao.
Navega entre as pginas e veja na prtica o funcionamento da aplicao.
Acessando a pgina Master da pgina de contedo
Voc pode facilmente acessar qualquer controle ou propriedade da pgina Master, na pgina de contedo, atravs da propriedade Master.
Por exemplo, para ler o contedo de um dos HyperLinks da pgina Master:
If Not Page.IsPostBack Then
Dim s As String = CType(Master.FindControl _
("Desentupimento"), HyperLink).Text End If
if (!Page.IsPostBack) {
string s = (Master.FindControl("Desentupimento")
as HyperLink).Text; }
53 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Tambm podemos alterar o texto ou mesmo qualquer propriedade do controle na Master Page, pois nossa operao por referencia:
Dim Hyper As HyperLink
Hyper = CType(Master.FindControl("Desentupimento"), HyperLink)
Hyper.ForeColor = System.Drawing.Color.Red
HyperLink Hyper;
Hyper = (Master.FindControl("Desentupimento") as HyperLink);
Hyper.ForeColor = System.Drawing.Color.Red;
Neste exemplo, estamos mudando a cor do HyperLink do contedo da pgina Master para vermelho.
Alterando o Ttulo das pginas de contedo
A pgina de contedo deve conter um atributo title, onde deve ser definido o titulo para exibio da pgina. Na ausncia deste, ser exibido o titulo da Master Page.
Outra alternativa definir no cdigo o ttulo para a pgina:
Master.Page.Title = "Titulo definido em tempo de execuo"
Master.Page.Title = "Titulo definido em tempo de execuo";
Trabalhando com contedo padro
Outra possibilidade interessante a de trabalhar com contedo padro. Voc pode definir um contedo padro de exibio na rea da pgina de contedo, da mesma forma que voc define o restante da pgina. Na pgina de contedo, para exibir o contedo padro, basta clicar em Default to Master Content na Smart Tag do controle de contedo.
Master Pages aninhadas
Alem de tudo o que estudamos, possvel mais. Voc pode criar Master Pages aninhadas, em diferentes nveis. O VS 2005 no da suporte em sua IDE para este recurso, portanto voc ter que fazer todo o trabalho manualmente.
54 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
55 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
6. Themes e Skins A formatao de suas pginas ASP.NET podero ser feitas de diversas maneiras, entre elas:
Uso de arquivos CSS;
Formatao diretamente nas pagina.
Utilizando o novo recurso de temas, possvel definir um padro para toda a aplicao sem necessidade de altera qualquer pgina. As possibilidades so muitas, vamos ver um exemplo prtico.
Crie uma nova aplicao ASP.NET; Crie um WebForm com os seguintes controles:
Crie a pasta App_themes. Esta uma pasta de sistema do ASP.NET. Para cri-la acesse o menu WebSite, ASP.NET Folder, Themes.
Na caixa de dialogo Add New Item exibida em seguida, selecione Skin File, de o nome de Red.
Clique sobre o boto direito sobre a pasta Themes e crie um novo Skin, desta vez com o nome Gray.
56 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
A formatao de controles num Skin definida usando a prpria tag de definio do controle, obviamente que alguns atributos no devero ser utilizados, como ID ou text.
No exemplo abaixo o definio para o Skin Red:
J o skin Gray fica assim:
Agora vamos definir que sua pgina ASP.NET vai utilizar um Theme. Clique sobre o formulrio e localize a propriedade Theme, note que todos os temas criados esto disponveis:
57 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Escolha o tema Red. Nos bastidores o tema escolhido adicionado em uma diretiva da pgina:
Rode a aplicao e observe o resultado.
58 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Altere o tema para Gray e rode a aplicao novamente.
Definindo o tema dinamicamente
Voc pode definir o tema durante a execuo do programa, atravs de uma escolha do usurio, por exemplo. Para isto basta alterar a propriedade Theme da pgina:
59 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Page.Theme = "red"
Page.Theme = "Red";
Definindo um tema para toda a aplicao
Voc tambm pode definir um tema no arquivo de configurao da aplicao, no n system.web. Esta configurao ser aplicada automaticamente para todas as pginas da aplicao:
Vale lembrar que uma configurao de pgina sobrescreve a de aplicao. Portanto se em determinada pgina voc no quiser usar o tema padro da aplicao, basta definir o tema desejado na pgina.
Apresentao diferenciada
Se voc precisar dar uma apresentao diferente para um determinado controle que j esta definido no arquivo skin, voc pode criar um nova definio deste controle adicionando a ele um SkinId. Para exemplificar, vamos alterar o arquivo skin Red de maneira que o titulo da pgina, Cadastro, seja exibido maior e de outra cor.
Primeiramente alteramos nosso arquivo Red:
Observe que foi adicionada uma nova tag asp:label, com SkinID como Titulo. Agora basta na pgina, alterar a propriedade SkinID do controle para Titulo:
A alterao de tema dinamicamente deve ser feita no evento PreInit da pgina.
O n pages j deve existir no seu arquivo de configurao, localize-o ao invs de criar um novo n.
60 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Certifique-se que sua pgina esta utilizando o Skin Red. Rode a aplicao:
61 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
7. Navigation
Surgido no ASP.NET 2.0, so uma srie de controles para auxiliar a navegao do usurio. Estes controles podem ser encontrados no grupo Navigation da barra de ferramentas do VS 2008, so eles:
SiteMapPath
Menu
TreeView
SiteMapPath
O controle SiteMapPath permite exibir um mapa de navegao para o usurio, numa estrutura hierrquica a partir da pgina raiz da aplicao. Para demonstrar as funcionalidades do controle, vamos criar um suposto aplicativo de comrcio eletrnico, com a seguinte estrutura:
62 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
A funcionalidade do controle SiteMapPath esta baseada em arquivo xml denominado web.sitemap, que pode ser facilmente criado pela opo Add New Item. Sua estrutura bsica a seguinte:
Trata-se de um arquivo XML padro. O n raiz denominado SiteMap. A estrutura do site deve ser representada por ns SiteMapNode, onde estes devem ser organizados de forma a representar a estrutura hierrquica do site. O atributo Url define o endereo da pgina, Title o titulo a ser exibido no controle, e descrio o Tool Tip que tambm ser exibido no controle.
Importante ressaltar que o arquivo deve ser montado de forma hierrquica, ou seja, uma pgina deve ser adicionada dentro do n siteMapNode da pgina hierarquicamente superior.
Para nossa aplicao proposta anteriormente, montei o seguinte arquivo:
63 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Observe que as impressoras esto dentro do n do departamento de informtica. Se no criarmos o arquivo desta forma, da pgina do departamento de informtica poderemos navegar apenas para a pgina inicial.
Observe o sistema rodando:
Analisando a janela de propriedades do SiteMapPath, voc pode descobrir algumas coisas interessantes: Por exemplo, a propriedade Path Separator permite definir um caractere de separao entre os caminhos.
Atravs da Smart Tag voc tambm pode definir uma auto-formatao para seu controle.
Menu
O controle Menu permite adicionar as funcionalidades de um menu em uma aplicao Web. Seu uso simples: aps adicionar um controle a um Web Form, basta abrir o
Voc no precisa configurar nenhuma propriedade do controle SiteMapPath para o mesmo funcionar, desde que o arquivo Web.sitemapth esteja correto. Bbasta adicionar o controle ao Web Form.
64 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
editor de itens do menu atravs da Smart Tag do controle ou mesmo da janela de propriedades, onde possvel gerenciar o contedo do Menu.
O editor de menu possui uma pequena barra de ferramentas com as seguintes funcionalidades:
Add a root item:
Adiciona um novo item no mesmo nvel da seleo atual
Add a child item:
Adiciona um novo item um nvel acima da seleo atual
Remove an iten:
Remove o item selecionado.
Move the item up amongst its siblings:
Sobe o item verticamente;
Move the item down amongst its siblings:
Desce o item verticalmente;
Make the selected item a sibling of its parent:
Desce o item
horizontalmente;
Make the selected item a sibling of its parent:
Sobe o item horizontalmente.
Cada item possui diversas propriedades configurveis, as mais significativas so text, que indica o texto a ser exibido no item, e navigateUrl: A URL de destino caso o usurio clique no item;
65 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Adicionar os itens e configurar suas propriedades tudo o que voc precisa para tornar o controle funcional, mas isso no tudo: Na smart tag do controle outra opo disponvel auto-format: Voc pode dar um visual agradvel ao seu menu sem muito trabalho.
Entre as propriedades do menu, orientation define o comportamento do menu: Horizontal ou Vertical.
Ligando seu Menu a um arquivo Web.sitemap
Se voc tem um arquivo Web.sitemap em sua aplicao, vimos que o controle SiteMapPath passa a utiliz-lo automaticamente, sem qualquer configurao ou alterao de propriedade.
Um controle Menu tambm pode fazer uso do arquivo, porm voc ter que lig-los manualmente. extremante simples:
Adicione um controle SiteMapDataSource ao seu Web Form (disponvel na Guia data da caixa de Ferramentas) No Menu, altera a propriedade DataSourceID para o controle SiteMapDataSource adicionado. Pronto! A partir de agora os itens de seu menu sero mapeados a partir do arquivo Web.sitemap que voc criou anteriormente.
66 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
TreeView
O terceiro controle que estudaremos no capitulo o TreeView. Trata-se de um poderoso controle que nos permite exibir estruturas navegveis e aninhadas. Sua configurao bsica simples, ao mesmo tempo em que prove uma grande quantidade de propriedades e alguns eventos que tornam o controle altamente poderoso e flexvel.
Para usar o controle basta adicion-lo ao Web Form. Atravs da smart tag do controle podemos acessar um editor de itens idntico ao do controle Menu:
67 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Ainda na smart tag podemos definir um modelo de auto-formatao:
A propriedade Show Lines tambm presente na smart tag do controle permite que sejam exibidas linhas entre o n raiz e seus ns aninhados:
68 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Definidas as propriedades de cada Item, o controle esta pronto para ser utilizado.
Ligando seu TreeView a um arquivo Web.sitemap
Um controle TreeView tambm pode fazer uso do arquivo Web.sitemap, o processo o mesmo do Menu:
Adicione um controle SiteMapDataSource ao seu Web Form (disponvel na Guia data da caixa de Ferramentas)
No Menu, altera a propriedade DataSourceID para o controle SiteMapDataSource adicionado.
69 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Seleo Mltipla
A propriedade ShowCheckBoxes permite que cada n seja transformado em caixas de verificao, de forma que voc poder selecionar mais de um n simultaneamente. Os valore possveis para esta propriedade so:
Root: Apenas os ns da raiz sero exibidos como caixas de verificao.
Parent: Apenas os ns pais sero exibidos como caixas de verificao.
Leaf: Apenas os ns folhas sero exibidos como caixas de verificao.
All: Todos os ns sero exibidos como caixas de verificao.
70 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Verificar programaticamente quais ns esto marcados relativamente simples. Tudo a fazer percorrer a lista de ns do controle usando um lao for next. No exemplo abaixo o cdigo percorre a relao de ns e adiciona o texto do n a um listbox:
Dim node As TreeNode For Each node In TreeView1.CheckedNodes
ListBox1.Items.Add(node.Text) Next
foreach (TreeNode node in TreeView1.CheckedNodes) {
ListBox1.Items.Add(node.Text); }
Gerenciando o controle em tempo de execuo
Voc tambm pode adicionar um n programaticamente. No exemplo abaixo o n adicionado na raiz do TreeView:
Dim node As New TreeNode node.Text = "Mveis para escritrio" node.NavigateUrl = "moveis.aspx" TreeView1.Nodes.Add(node)
TreeNode node; node = new TreeNode();
71 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
node.Text = "Mveis para escritrio"; node.NavigateUrl = "moveis.aspx"; TreeView1.Nodes.Add(node);
Adicionar um n aninhado a outro um pouco mais complicado. Primeiro voc deve localizar o n pai utilizando o mtodo FindNode, que recebe o caminho (path) do n. Ento basta adicionar um novo n a sua coleo de ns filhos:
Dim Atual As TreeNode = _ TreeView1.FindNode("PginaPrincipal/Departamento de Informtica") Dim Novo As New TreeNode Novo.Text = "Mveis para escritrio" Novo.NavigateUrl = "moveis.aspx" Atual.ChildNodes.Add(Novo)
TreeNode Atual = TreeView1.FindNode
("PginaPrincipal/Departamento de Informtica"); TreeNode Novo = new TreeNode(); Novo.Text = "Mveis para escritrio"; Novo.NavigateUrl = "moveis.aspx"; Atual.ChildNodes.Add(Novo);
Na imagem abaixo voc pode ver o resultado:
Para remover ns temos o mtodo Remove.
Finalmente, podemos recolher um TreeView em tempo de execuo:
72 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
TreeView1.CollapseAll
TreeView1.CollapseAll();
Ou mesmo expandir:
TreeView1.ExpandAll;
TreeView1.ExpandAll();
73 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
8. WebParts
WebParts no um conceito novo, mas que surgiu a partir do ASP.NET 2.0 de forma fcil e poderosa.
WebParts nos permite criar pginas com contedo gerencivel pelo usurio, onde esse pode arrastar controles, mudar aparncias, ocultar o que no for preciso ou exibir novamente, enfim, traz para o ambiente Web uma interatividade completa entre o usurio e a aplicao, tudo isto com persistncia.
Modos
Uma pgina ASP.NET utilizando WebParts pode estar em diferentes modos. Cada modo diz respeito ao comportamento do contedo da pgina e como o usurio poder interagir com este contedo. Os quatro modos possveis so:
Normal: A pgina esta em modo normal, no permite quase nenhuma interatividade com o usurio;
Catalog: Exibe a relao de sees da pgina, bem como permite ao usurio indicar em qual seo determinado item dever permanecer. Permite restaurar controles que foram fechados.
Design: Permite fazer o gerenciamento de zonas em uma pgina;
Edit: Permite editar zonas de uma pgina
WebPartManager
O WebPartManager um controle disponvel na guia WebParts e o responsvel por todo o gerenciamento do contedo e de seu estado. o principal controle e obrigatrio quanto trabalhamos com WebParts.
O gerenciamento de estado e contedo do WebPartManager feito utilizando um banco de dados do SQL Server 2005, de nome ASPNETDB.MDF, que pode ser encontrando dentro da pasta App_Data.
74 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
WebPartZone
Outro controle importantssimo e essencial o WebPartZone. Atravs deste podemos definir as zonas onde sero agrupados o contedo da pgina. Este controle um container para controles comuns, que de forma declarativa devem estar dentro da tag ZoneTemplate.
Utilizando WebParts
Crie uma nova aplicao ASP.NET; Coloque sobre o Web Form criado um controle WebPartManager; Coloque sobre o Web Form criado um controle WebPartZone; Atravs da Smart Tag escolha uma das opes de auto-formatao; Arraste para dentro do WebPartZone criado dois controles textbox; Rode a aplicao
Com esta simplicidade nossa aplicao j contem alguma interatividade. Observe que cada controle dentro da WebPartZone pode ser minimizado ou fechando, atravs da seta a direita do controle:
75 ASP.NET 3.5 em VB.NET e C# Copyright2008, Fernando Amaral. Todos os direitos reservados. Este documento protegidos por direitos autorais e outros direitos de propriedade intelectual. www.fernandoamaral.com.br
Observe que no exemplo acima os controles possuem um texto personalizado, Primeiro e Segundo. Isto pode ser feito atravs do atributo Title de cada controle contido dentro da Zone Template. Isto deve ser feito de forma declarativa, pois esta no uma propriedade do controle:
Voc tambm pode personalizar os textos do Menu de controle atravs das propriedades CloseVerb e MinimizeVerb, procurando pelo atributo Text. Outras mensagens e rtulos que surgiro mais adiante podero tambm ser personalizadas, basta procurar a propriedade equivalente.
Modo Catalog
Como dissemos o modo padro de uma pgina o Normal. Vamos ver agora como colocar uma pgina em modo Catalog, e quais as funcionalidades deste modo. Porm antes vamos criar mais duas zonas, para isto adicione mais dois novos controles WebPartZone ao formulrio. Dentro do primeiro adicione dois controles Button, e no segundo dois controles CheckBox. Adicione um terceiro boto, alterando a propriedade text para Catalog, porm no o coloque dentro de nenhuma zona.
Para que seja possvel colocar a pgina em modo catalogo voc deve adicionar um controle CatalogZone. De ao mesmo uma auto formatao. O Controle CatalogZone
um container para Catlogos de Pgina.