ASP.net VB.net C# Book

212

Transcript of ASP.net VB.net C# Book

  • 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.