Apostila ASP.net CarlosJr

72
Curso Básico ASP.NET 3.5 (C#) 2009 Carlos Júnior [email protected] www.devcursos.com.br

description

Apostila com conteúdo de ASP.NET autor CarlosJr

Transcript of Apostila ASP.net CarlosJr

  • Curso Bsico ASP.NET 3.5 (C#)

    2009

    Carlos [email protected]

    www.devcursos.com.br

  • PARTE I INTRODUO AO .NET ...................................................................... 3

    CAPITULO 1 O .NET FRAMEWORK ............................................................................... 3 CAPITULO 2 A LINGUAGEM C# ................................................................................... 6

    PARTE II DESENVOLVENDO APLICAES ASP.NET .............................................. 18

    CAPITULO 3 VISUAL STUDIO 2008 .............................................................................. 18 CAPITULO 4 FUNDAMENTOS WEB FORM ...................................................................... 24 CAPITULO 5 WEB CONTROLS ................................................................................... 32 CAPITULO 6 STATE MANAGEMENT ............................................................................. 35 CAPITULO 7 TRATAMENTO DE ERRO, LOG E TRACE ......................................................... 36 CAPITULO 8 VALIDAES ....................................................................................... 40 CAPITULO 9 USER CONTROLS .................................................................................. 44 CAPITULO 10 ESTILOS E MASTER PAGES ...................................................................... 45 CAPITULO 11 WEB SITE NAVIGATION ......................................................................... 51

    PARTE III TRABALHANDO COM DADOS ............................................................ 53

    CAPITULO 12 FUNDAMENTOS DO ADO.NET ................................................................... 53 CAPITULO 13 DATA CONTROLS ................................................................................. 63 CAPITULO 14 FILES E STREAMS ................................................................................. 66 CAPITULO 15 XML ................................................................................................ 68

    PARTE IV ASP.NET + AJAX .......................................................................... 70

    CAPITULO 16 CRIANDO APLICAES COM INTERFACES RICAS SEM REFRESH .......................... 70

    ............................................................................................................. 70

    PARTE V BOAS PRTICAS DE DESENVOLVIMENTO ............................................... 71

    CAPITULO 17 DESENVOLVIMENTO DE SISTEMAS EM CAMADAS ............................................. 71

  • PARTE I INTRODUO AO .NET

    CAPITULO 1 O .NET FRAMEWORK

    A Plataforma Microsoft.NET oferece uma alternativa de ambiente para produzir e executar aplicaes Web,

    Windows, Mbile (SmartPhone), WebServices, rodando-as em PCs, micros de mo e outros dispositivos, como telefones celulares. O

    plano da Microsoft tornar a infra-estrutura dessa plataforma amplamente disponvel. Pode ser baixada em seu site e faz parte das

    verses mais novas do Windows.

    A Plataforma .NET tambm a principal arma com a qual a Microsoft tenta marcar posio no concorridssimo mercado dos Servios

    Web (Web Services) - nome dado a programas ou componentes que devem ser utilizados na Internet.

    Estes servios on-line so a pedra de toque da Internet, tal como os estrategistas das grandes empresas a imaginam num futuro

    prximo.

    Por meio de servios Web, empresas trocaro informaes e faro negcios. Aplicaes que rodam num local podero usar mdulos

    localizados num servidor remoto, consolidando um modelo de computao distribuda. Residentes em servidores Web, esses servios

    podem fornecer produtos finais - por exemplo, documentos e informaes - ou desempenhar tarefas especficas, como realizar clculos

    e autenticar transaes. Espera-se, assim, que os sites operem de forma integrada, gerando benefcios para empresas e indivduos. Na

    essncia, essa viso dos servios Web hoje compartilhada por grandes nomes como IBM, Sun e Oracle, e todos tm iniciativas nessa

    rea.

    Uma caracterstica central da Plataforma .NET aderir aos padres da Internet sem abrir mo de procedimentos j consagrados no

    Windows. Para isso conta com o Visual Studio.NET, sute de programao definida pela Microsoft como "especialmente voltada para a

    rpida construo de aplicativos em qualquer plataforma".

    O produto incorpora as linguagens Visual Basic .NET, Visual C++ e Visual C# (CSharp).NET.

    NOTA:Em nosso curso usaremos a verso 3.5 do .NET FRAMEWORK e verso 3.5 da linguagem C# em nossos exemplos.

  • TERMOS DA PLATAFORMA

    CLR - Sigla de Common Language Runtime. Base comum a todas as linguagens .NET, o CLR o ambiente

    que gerencia a execuo de cdigo escrito em qualquer linguagem. Faz parte do Framework.

    FRAMEWORK - o modelo da plataforma .NET para construir, instalar e rodar qualquer aplicao, no desktop ou na Internet. Para

    executar um programa .NET, preciso ter o Framework instalado.

    IDE COMPARTILHADO - Ambiente integrado de programao (Integrated Development Environment) do Visual Studio.NET.

    Diferentes linguagens usam o mesmo editor de cdigo e depurador e compilam executveis na linguagem MSIL. Alm das linguagens

    da Microsoft, j h mais de 20 outras (Perl, Cobol, Pascal, etc) que podem usar esse ambiente.

    MSIL - Microsoft Intermediate Language. Quando se compila uma aplicao .NET, ela convertida para uma linguagem intermediria,

    a MSIL, um conjunto de instrues independentes de CPU. Na hora de executar o programa, um novo compilador, chamado Just-in-

    time (JIT) Compiler, o converte para o cdigo nativo, ou seja, especfico para o processador da mquina.

    MANAGED CODE - Cdigo administrado, ou seja, cdigo escrito para rodar com o runtime do VS.NET. No VS.NET, somente o C++

    produz programas que no dependem do runtime, o chamado Unmanaged code.

    SOAP - Sigla de Simple Objetc Access Protocol, ou protocolo simples de acesso a objetos. O SOAP um padro aberto, baseado em

    XML, criado pela Microsoft, Ariba e IBM para padronizar a transferncia de dados entre aplicaes. Pode ser usado em combinao com

    vrios outros protocolos comuns da Internet, como HTTP e SMTP.

    UDDI - Iniciais de Universal Description, Discovery and Integration, uma espcie de pginas amarelas para web services. Na UDDI,

    empresas expem seus servios para que outras possam utiliz-los.

    WEB SERVICES - programa completo ou componente de software residente num servidor web.

    XML - Sigla de Extensible Markup Language, o XML uma linguagem baseada em tags semelhante ao HTML. Sua principal

    caracterstica a extensibilidade. Quem emite um documento XML pode criar tags personalizadas, que so explicadas num documento

    anexo, que tem extenso XSD.

    XSD - Sigla de XML Schema Definition. Arquivo associado a um documento XML que descreve e valida aos dados no documento. Assim

    como as linguagens de programao, os XSDs aceitam dados de diferentes tipos, como nmeros, data e moeda.

    XML WEB SERVICES - Blocos fundamentais para a criao de sistemas de computao distribuda na Internet. Um servio web

    uma poro de cdigo localizada num servidor web e que pode ser utilizada por uma aplicao qualquer. O web service pode produzir

    documentos ou procedimentos. Uma das caractersticas centrais dos web services serem baseados em padres abertos.

    WSDL - Web Service Description Language. Submetida W3C - o rgo padronizador da Internet.

    A linguagem WSDL define regras baseadas em XML para descrever servios web.

    Como o .NET FRAMEWORK Funciona:

  • CAPITULO 2 A LINGUAGEM C#

    Variveis na linguagem C#

    Na linguagem C# as variveis esto agrupadas em algumas categorias como:

    Static: Existe apenas uma nica cpia desta varivel para todas as instancias de uma classe. Uma varivel static comea a existir

    quando um programa comea a executar, e deixa de existir quando o programa terminar.

    Instance: Existe uma cpia para cada instancia de uma classe. Uma varivel Instance comea a existir quando uma instancia

    daquele tipo criado, e deixa de existir quando no houver nenhuma referncia quela instancia ou quando e mtodo Finalize

    executado.

    Array: uma matriz que criada em tempo de execuo.

    Tipos

    Podemos armazenar muitos tipos de informaes diferentes dentro de uma varivel, como nmeros, datas, e strings. Nesta linguagem,

    seus tipos podem ter dois tipos:

    Por Valor: os valores so gerenciados diretamente na memria.

    Por Referencia: os valores so passados por meio de um ponteiro.

    Inteiros (por valor)

    Este tipo um numero inteiro sem frao ou parte decimal. Por exemplo, o nmero 1058 um numero inteiro. O tipo inteiro

    subdividido em alguns subtipos. Veja a tabela que mostra estes tipos de inteiro.

    Tamanho Descrio

    byte Inteiro de 1 bit sem sinal (0 a 255)

    Sbyte Inteiro com sinal de 8 bits (-127 a 128)

    int Inteiro de 32 bits com sinal (-2.147.483.648 a 2.147.483.147)

    uint Inteiro de 32 bits sem sinal (0 a 4.294.967.295)

    long Inteiro com sinal de 64 bits (-9.223.372.036.854.775.808 a 9.223.372.036.854.775.807)

    ulong Inteiro sem sinal de 64 bits (0 a 18.446.744.073.709.551.615)

    short Inteiro com sinal de 16 bits (-32.768 a 32.767)

    ushort Inteiro sem sinal de 16 bits (0 a 65.535)

  • Exemplos:

    byte VarIdade = 25;

    int VarValor = 1.542;

    long VarValor = 5.684.548.520;

    short VarInd = 25.620;

    Lgicos (por valor)

    Esses tipos so usados para comparao. Portanto esses tipos s podem assumir os valores verdadeiro ou falso.

    Tipo Descriobool true ou false

    Exemplos:

    bool VarDesativado = false;

    bool VarCondicao = true;

    Caracteres (por valor)

    Este tipo armazenado em 16 bits, representa um caractere de uma string. Essas variveis so armazenadas no padro Unicode.

    Tipo Descriochar Um nico caractere Unicode de 16 bits.

    Exemplos:

    char VarChar = a;

    Representa um caractere literal.

    char VarChar = \x0025;

    Representa um caractere hexadecimal.

    char VarChar = \u0025;

    Representa um caractere Unicode.

    char VarChar = (char)25;

    Retorna o caractere correspondente na Tabela ASCII.

  • Ponto Flutuante (por valor)

    As variveis com este tipo possuem nmeros com ponto flutuante utilizando o padro IEEE de 4 a 8 bytes.

    Tipo Descrio

    doublePonto flutuante binrio de 8 bytes

    Este tipo tem uma preciso de 15 casas decimais.

    float Ponto flutuante binrio de 4 bytes

    Este tipo tem uma preciso de 7 casas decimais.

    As operaes com este tipo no geram erros, mas h alguns ressaltos que devemos saber:

    Se o valor retornado para a varivel conter um nmero muito pequeno, este valor torna-se zero.

    Uma diviso por zero no causa um erro, mas produzido um valor infinito.

    Operaes de ponto flutuante devolvem NaN (Not a Number) para sinalizar que aquele resultado da operao indefinido. Portanto

    se um dos operadores for NaN o resultado retornado ser NaN.

    Exemplos:

    float VarIndice = 3.1356F;

    double VarCorrecao = 5.12D;

    Decimal (por valor)

    O tipo decimal representa com mais preciso nmeros no inteiros e com um valor muito alto.

    Tipo Descrio

    decimal Ponto flutuante decimal de 128 bytes

    Este tipo tem uma preciso de 28 casas decimais.

    Exemplos:

    decimal VarIndice = 560.5m;

    decimal VarCorrecao = 545.2m;

  • String (por referncia)

    Este tipo pode conter at 1 gigabyte de caractere e alocado dinamicamente, por isso dizemos que este tipo por referncia.

    Tipo Descrio

    string Unicode com at 1 gigabyte de caractere.

    Exemplos:

    string VarNome = Carlos Jnior;

    string VarEmail = [email protected];

    string VarConcatenar = VarNome + VarEMail;

    As strings so compostas por caracteres e podem conter caracteres literais. Veja a representao dos literais strings:

    Tipo Descrio\ Apstrofo\ Aspas

    \\ Barra invertida\0 Zero binrio ou nulo

    \a Alerta\b Retrocesso\f Avano de pgina\n Salto de linha\r Retorno de carro\t Tabulao horizontal\v Tabulao vertical\uNNNN NNNN o cdigo em hexadecimal

    Uma representao importante das string a arroba ( @ ), utilizada para especificar nomes de arquivos e pastas.

    Exemplos:

    string VarLinha = Pula Linha \n;

    string VarCaminho = @c:\temp\oledb.txt;

    Neste caso com o uso da arroba ( @ ) a representao dos caracteres de barra invertida ( \ ) no feita dentro da string.

    Enum (por valor)

    O tipo enum usado para declarar uma enumerao, um tipo distinto que consiste em um jogo de constantes nomeadas chamadas a

    lista de enumerados.

    Exemplos:

    enum DiasDaSemana {Domingo = 1,Segunda = 2,Terca = 3,Quarta = 4,Quinta = 5,Sexta = 6

    }

  • Arrays

    Um tipo array uma matriz de valores do mesmo tipo, que criada em tempo de execuo, podendo ser acessada por meio de um

    ndice.

    A declarao do array sempre faz o uso de um colchete( [ ] ) depois do tipo da varivel. O uso da instruo new sempre deve ser

    utilizado, pois obrigatrio.

    O tipo array pode ter diversas dimenses, o tamanho desta definido pelo desenvolvedor, mas devemos saber que o primeiro ndice

    sempre zero.

    No tipo array devemos sempre inicializar seus elementos, pois obrigatrio tambm.

    Veja abaixo a forma de sintaxe para a declarao de arrays:

    TIPO[ ] nomeDoArray = new TIPO[tamanho do array];

    Float[ ] nomeDoArray = new Float[5];

    String[ ] nomeDoArray = new String[5];

    Estruturas de deciso

    As estruturas de deciso ou tambm chamada de lgica condicional, permite especificar qual cdigo deve ser executado dependendo

    das condies satisfeitas. Este recurso torna-se necessrio para qualquer lgica implementada.

    Instruo if

    a forma mais simples de se aplicar lgica condicional.A instruo if simples. Se a condio for satisfeita ento o cdigo

    executado. Vamos ver a forma de sintaxe para esta instruo ( if ).

    If ( condio ) {

    //Instrues;

    }

    A instruo else opcional e indica a instruo que o aplicativo deve executar se a condio imposta pelo if no for satisfatria.

    Temos tambm a instruo else if que permite testar outras condies.

    If ( condio ) {

    //Instrues;

    } else if ( condio ) {

    //Instrues;

    } else {

    //Instrues;

    }

    Instruo switch

    A instruo switch utilizada em situaes em que houver a necessidade de diversos testes condicionais. So basicamente uma

    combinao de instruo if com oraes de else if. Estas instrues examinam uma condio e especifica qual bloco de cdigo deve

    ser executado. Vamos examinar a sintaxe da instruo switch.

    switch ( condio ) {

    case condio 1 : //Instrues; break;

    case condio 2 : //Instrues; break;

  • case condio N : //Instrues; break;

    default: //instrues default;

    }

    Estruturas de Repetio

    As estruturas de repetio so utilizadas em situaes onde preciso executar um conjunto de instrues determinadas vezes, at que

    a condio imposta para o fim da repetio for satisfeita.

    Instruo For

    Esta estrutura de repetio utilizada quando o desenvolvedor sabe quantas vezes o cdigo deve ser executado. Por isso devemos

    definir as faixas inicial e final. Esse loop incrementa um contador para dizer quando encerrar a execuo desta repetio. Vamos

    acompanhar abaixo a sintaxe desta instruo ( for ).

    for ( varivel; condio; incremento ) {

    Instrues;

    }

    Uma variao desta instruo o foreach...in. A diferena desta instruo que o desenvolvedor no precisa especificar as faixas

    inicial e final. utilizado para percorrer uma coleo ou um array por exemplo. Vamos acompanhar a sintaxe da instruo.

    foreach ( tipo varivel in coleo/array ) {

    //instrues;

    }

    Instruo While

    Esta instruo executa um loop enquanto uma determinada condio de execuo for satisfatria. While significa enquanto, portanto

    enquanto a condio for verdade sero executas as instrues. Acompanhe a sintaxe abaixo:

    while ( condio ) {

    //Instrucoes;

    }

    Instruo Do While

    O loop do while tem a mesma funo da instruo While, a nica diferena que a condio testada no final da instruo. Com isso

    podemos assegurar em alguns casos na linguagem C# que o loop seja realizado pelo menos uma nica vez. Acompanhe a sintaxe

    abaixo:

    do {

    //Instrucoes;

    } while ( condio );

  • Formatao

    A formatao muito utilizada pelos desenvolvedores em suas aplicaes. Este processo busca uma forma de apresentao mais

    inteligvel e funcional, em funo das configuraes de cada pas, principalmente na formatao de valores monetrios e datas. Para

    isso a plataforma .Net traz muitas funes para a linguagens C#.

    Formatao de Nmeros

    essencial a formatao de nmeros nas aplicaes desenvolvidas. A linguagem C# trabalha bem com estas formataes. Para isso

    destacaremos a funo ToString:

    ToString( ): retorna a formatao padro dos tipos numricos. Este mtodo disponvel para os tipos numricos. Aceita uma string

    de formatao para os tipos como valores monetrios, decimal, ponto fixo, dentre outros, e uma referncia para uma cultura.

    Acompanhe abaixo a sintaxe do mtodo:

  • VariavelNumerica.ToString(StringFormatao, ReferenciaCultural);

    Exemplo:

    VarValor.ToString(c, new CultureInfo(pt-BR));

    // Exemplo do resultado da formatao acima: R$ 15.680,12

    A tabela abaixo mostra-nos os caracteres de formatao que so utilizados na funo ToString( ):

    Caractere DescrioC ou c Representam valores monetrios

    D ou d Formatao Decimal. Apenas para nmeros Inteiros.E ou e Formato de Notao Cientifica

    F ou f Representam o formato de Ponto FixoG ou g Formato Geral dos nmeros

    N ou n Representao NumricaP ou p Formato de porcentagem

    R ou r Assegura que um nmero convertido para string, ter o mesmo formato se convertido de volta para

    nmero.

    X ou x Formatao para Hexadecimal

    Formatao de Datas e Horas

    Para um aplicativo que utilizado em vrios paises, devemos ter o cuidado para o tratamento de datas e horas. necessria a

    formatao para as aplicaes que necessitam das informaes de datas e horas para executar determinadas funes.

    A linguagem C# sabendo da importncia do tratamento de datas e horas, dispe de duas classes para isso: DateTime e TimeSpan.

    Vejamos abaixo a sintaxe do mtodo ToString( ) para a formatao de datas:

    VariavelDateTime.ToString(StringFormatao, ReferenciaCultural);

    Exemplo:

    VariavelDateTime.ToString(dd/MM/yyyy);

    // Exemplo do resultado da formatao acima: 01/01/2008

  • Como visto acima, o mtodo ToString( ) possui como parmetros: uma string de formatao e uma expresso para a referencia

    Cultural. Acompanhe na tabela abaixo os caracteres de formatao correspondente para a manipulao de datas e horas.

    Caractere Descrio Exemplod Exibe o dia do ms sem o zero 1, 2, 6, 12, 31dd Exibe o dia do ms com o zero 01, 02, 06, 12, 31ddd Exibe o nome abreviado do dia Seg, Ter, Quadddd Exibe o nome completo do dia Segunda-feiraM Exibe o ms sem o zero 1, 2, 6, 12MM Exibe o ms com o zero 01, 02, 06, 12MMM Exibe o nome abreviado do ms Jan, Mar, DezMMMM Exibe o nome completo do ms Janeiro, Dezembroy Exibe os dois ltimos dgitos do ano sem o zero 1, 2, 6, 99yy Exibe os dois ltimos dgitos do ano com o zero 01, 02, 06, 99yyyy Exibe os quatro dgitos do ano 2008, 2006, 1999

    hExibe as horas sem o zero para horas de 1 a 9.

    Apresenta formato de 12 horas. 1, 2, 6, 12

    hhExibe as horas com o zero para horas de 1 a 9.

    Apresenta formato de 12 horas. 01, 02, 06, 12

    HExibe as horas sem o zero para horas de 1 a 9.

    Apresenta formato de 24 horas. 1, 2, 9, 13, 15

    HHExibe as horas com o zero para horas de 1 a 9.

    Apresenta formato de 24 horas. 01, 02, 09, 13, 15

    m Exibe os minutos sem o zero para minutos de 1 a 9. 1, 2, 6, 12, 58mm Exibe os minutos com o zero para minutos de 1 a 9. 01, 02, 06, 12, 58s Exibe os segundos sem o zero para seg. de 1 a 9. 1, 2, 3, 16, 59ss Exibe os segundos com o zero para seg. de 1 a 9. 01, 02, 03, 16, 59: Separador de tempo 13: 49: 52/ Separador de data 13/ 01/ 2002

    Converso de Valores

    Converter um tipo de dado em nmero ou em literal comum em situaes de programao. Quando esta aplicao for destinada a

    Web com intervenes de internautas, esse recurso utilizado com mais freqncia ainda. comum o internauta testar a aplicao

    para ter certeza que o desenvolvedor se preocupou com as devidas converses de valores.

    Devemos considerar alguns aspectos para a converso de nmeros:

    Como existem diversos tipos de nmeros, inteiros, ponto flutuante ou decimal, os valores so convertidos sempre para o tipo

    de maior faixa de valores. Por exemplo, o tipo long convertido para o ponto flutuante, mais importante ressaltar que o

    contrario causa um erro.

    Os tipos de menor faixa so convertidos para os de maior faixa. Por exemplo, o tipo int pode ser convertido para: long, float,

    double ou decimal.

    A converso dos tipos de ponto flutuante(float, double) para decimal causa erro.

    A converso entre os tipos com sinal e sem sinal de valores inteiros com o mesmo tamanho causa erro. Por exemplo, entre o

    tipo int e unit.

    Caso precise forar uma converso mesmo que haja perda de informaes, a linguagem disponibiliza um operador com este recurso.

  • Exemplos:

    int VarValor = (int)8544555L;

    Neste caso a varivel inteira vai receber o quanto poder suportar do tipo long.

    long VarValor = (long)29.145;

    Neste caso a varivel inteira do tipo long suportar o quanto for possvel do nmero no inteiro.

    Em alguns casos os tipos de converso no precisam ser especificados pelo desenvolvedor, essa converso feita automaticamente.

    Exemplos:

    int VarInteiro = 32450;

    long VarLong = VarInteiro;

    float VarFloat = VarLong;

    double VarDouble = VarFloat;

    decimal VarDecimal = VarLong;

  • Operadores

    Operadores so smbolos utilizados para efetuar alguma ao.

    Veja a tabela de operadores que o C# suporta.

    Tipo Operadoraritmticos + - * /

    lgicos ! && ||concatenao +

    Incremento e decremento ++ relacional < > =

    Igualdade == !=atribuio = *= /= += condicional ? :

    Mtodos

    Mtodos so implementados para executar alguma ao e podem ser declarados em um objeto ou classe. Static Methods (Mtodos

    Estticos) so mtodos que podem ser acessados atravs de suas classes e ou objetos sem a necessidade de instanciar os mesmos, j

    Instance Methods (Instncia de mtodos) somente podem ser acessados atravs da instncia de sua classe e ou objeto.

    Os mtodos possuem uma lista de parmetros (pode ou no conter parmetros) que representam valores ou variveis referenciadas,

    podendo tambm retornar algum tipo de dado.

    A assinatura de um mtodo deve ser nica na classe em que foi declarada. A assinatura de um mtodo consiste no nome do mtodo, e

    sua lista de parmetros, os tipos dos parmetros informados, e tipo de dado caso a mesma retorne algum dado.

    Value Parameter: usado como parmetro de entrada apenas (Input). A modificao do valor deste parmetro dentro do mtodo

    no refletida fora do escopo do mtodo.

    Reference Parameter: usado como parmetro de entrada/sada (Input/Output). A modificao do valor deste parmetro refletida

    fora do escopo do mtodo.

  • Exemplo: (Static Method)

    static void RegistrarAcesso(Int32 codigoPedido) {

    // Cdigo do mtodo.

    }

    Exemplo: (Instance Method)

    void RegistrarAcesso (Int32 codigoPedido) {

    // Cdigo do mtodo.

    }

    Exemplo: (Reference Parameter)

    void RegistrarAcesso (ref Int32 codigoPedido) {

    // Cdigo do mtodo.

    }

    Exemplo: (Retornando valores)

    decimal CalcularPedido(ref Int32 codigoPedido) {

    // Cdigo do mtodo.

    }

  • PARTE II DESENVOLVENDO APLICAES ASP.NET

    CAPITULO 3 VISUAL STUDIO 2008

    Quando o Visual Studio .Net aberto pela primeira vez, exibia a pgina inicial (Start Page, veja imagem abaixo). A pgina inicial

    exibe uma lista de projetos utilizados recentemente.Voc poder clicar no link de algum projeto para voltar a trabalhar com o mesmo.

    A pgina inicial exibe tambm uma lista de links de contedos on-line do site da Microsoft MSDN.

  • Criando Aplicao Web

    Para criar sua primeira aplicao no Visual Studio, siga os seguintes passos:

    1. Selecione File New Web Site do menu do Visual Studio. A caixa de dilogo New Web Site ser aberta, veja a imagem abaixo:

  • 2. Escolha o tipo da aplicao. Selecione o template ASP.NET Web Site. Outros templates iro auxili-lo na criao de aplicaes Web, Webservices e sites mais especficos, adicionando arquivos adicionais ou configuraes especficas.

    3. Selecione a verso do .NET FRAMEWORK que voc deseja utilizar. Normalmente voc ir utilizar o .NET FRAMEWORK 3.5, porm voc poder utilizar o Visual Studio para criao de aplicaes Web utilizando verses antigas do .NET FRAMEWORK.

  • 4. Escolha uma localizao para o Website. A localizao especfica onde os arquivos do Webiste ficaro armazenados. Normalmente escolhemos File System e ento usamos as pastas do computador local. Voc poder informar o diretrio

    manualmente na caixa de texto da localizao ou poder clicar no boto Browse onde a caixa de dilogo Choose Location ser

    exibida (veja imagem abaixo):

    5.

    Clique no boto OK para criar o website. Neste ponto o Visual Studio ir criar o novo website com apenas trs arquivos. Um

    arquivo chamado Default.aspx que a pgina inicial do website, outro arquivo chamado Default.aspx.cs que o cdigo fonte

    da pgina. O terceiro arquivo o arquivo de configurao do website chamado web.config (Iremos explorar este arquivo mais

    tarde).

    Neste momento voc esta pronto para comear a criao do seu website. Veja agora como adicionar novos itens ao website e

    tambm como alterar o design de suas pginas web.

  • Solution Explorer

    A Solution Explorer reflete tudo que est no diretrio da sua aplicao, nenhum arquivo ficar escondido, pois se voc atravs do

    Windows Explorer adicionar arquivos HTML, imagens, e diretrios, e na prxima vez que voc atualizar a Solution Explorer voc ver os

    novos contedos adicionados.

    Adicionando WebForms

    Como voc est criando um website, voc precisar adicionar novas pginas web entre outros itens. Para adicionar estes itens, Na

    Solution Explorer, clique com o boto direito do mouse sobre o website criado e escolha a opo Add New Item, a caixa de dilogo

    Add New Item ser aberta, veja tela abaixo:

  • Voc poder adicionar vrios outros tipos de arquivos, como arquivos de configurao, Style Sheets, Imagens, Arquivos HTML,

    Arquivos de cdigo e muito mais.

    Para adicionar um web form, escolha Web Form na caixa de dilogo, voc ver duas novas opes Place code in separate file,

    deixando esta opo desmarcada o visual studio ir criar apenas um arquivo, e voc dever colocar o cdigo fonte da pgina na

    mesma pgina que voc ir colocar o HTML da mesma, marcando tal opo um arquivo distinto ser criado para conter o cdigo fonte

    da pgina separando o cdigo HTML do cdigo fonte (recomendvel). A outra opo Select Master Pager onde voc poder criar sua

    pgina selecionando uma pgina padro, iremos explorar esta opo mais tarde.

    Clique em Add para adicionar o Web Form, dois arquivos sero adicionados na Solution Explorer, um arquivo com extenso .aspx (que

    o cdigo HTML) e outra arquivo .aspx.cs (que cdigo fonte da pgina).

  • CAPITULO 4 FUNDAMENTOS WEB FORM

    Tipos de Arquivos ASP.NET (ASP.NET Files Type)

    As aplicaes Asp.Net podem inlcuir vrios tipos de arquivos. A tabela abaixo descreve os principais tipos de arquivos:

    Nome do Arquivo Descrio

    Extenso .aspx Estes arquivos so arquivos de pginas ASP.NET, estes arquivos contem a interface do

    usurio e opcionalmente o cdigo fonte da mesma.

    Extenso .ascx

    Estes arquivos so os ASP.NET User controls, so similares a uma pgina web, porm

    eles no podem ser acessados diretamente, devem estar dentro de uma pgina web

    (.aspx). User controls permite voc criar pequenas pedaos interfaces inseridos em

    diversos web forms.

    Web.configEste um arquivo baseado em XML com as configuraes da sua aplicao ASP.NET.

    Neste arquivo esto inclusos configuraes de segurana, gerenciamente de estado

    (state management) e muito mais.

    Global.asaxEste um arquivo global da aplicao. Voc pode usar este arquivo para definir

    variveis globais (variveis que podem ser acessadas por qualquer pgina da

    aplicao) e tambm usar eventos como quando a aplicao inicializada.

    Extenso .cs Estes so os arquivos com o cdigo fonte (Code-Behind) que contm os cdigos C#.

    Eles permitem que voc separe a interface do usurio da lgica da pgina.

    Adicionalmente, sua aplicao web poder conter outros recursos que no so arquivos especiais do ASP.NET, por exemplo seu

    diretrio virtual poder conter imagens, arquivos HTML, ou arquivos CSS. Estes recursos podero ser utilizados pelas suas pginas

    ASP.NET ou usados independente. Um Website normalmente combina pginas estticas (HTML) com pginas dinmicas (pginas

    ASP.NET).

    ASP.NET Application Directories (Diretrios ASP.NET)

    Toda aplicao web deveria ter uma estrutura de diretrio bem planejada. Por exemplo, voc provavelmente ir querer separar a pasta

    de armazenamento de imagens diferente de suas pginas web. Voc poder colocar suas pginas ASP.NET em um pasta pblica e

    restringir o acesso a outras pastas. Alm das pastas que voc criou, o ASP.NET usa alguns subdiretrios especiais, algumas delas esto

    listadas abaixo:

    Diretrio Descrio

    BinContm todos os componentes .NET compilados (DLLs) que o ASP.NET esta utilizando.

    Por exemplo, se voc criar um componente especfico, voc dever coloca-lo nesta

    pasta.

    App_Code Contm arquivos de cdigo fonte que so dinamicamente compilados para serem

    usados pela aplicao.App_WebReferences Armazena as referncias aos web services utilizados pela aplicao.

    App_DataArmazenamento de dados, incluindo arquivos de banco de dados como SQL Server

    2005 Express Edition, arquivos XML. Claro que voc poder armazenar tais arquivos

    em qualquer outro diretrio.App_Themes Armazena os esquemas (Themes) que sero utilizados pela sua aplicao web.

  • Introduo a Server Controls

    O ASP.NET inova trazendo um novo modelo de criao de pginas web. O desenvolvimento de pginas web de antigamente,

    programadores tinha que saber o mximo de HTML antes da criao de suas pginas web dinmicas. ASP.NET resolveu este problema

    com o modelo autonvel de controles do lado servidor (server controls). Estes controles so criados e configurados como objetos. Eles

    rodam do lado servidor (web server) e seus HTML so automaticamente gerados.

    HTML Server Controls: Estes controles so baseados no servidor (server-based), porm so equivalente aos elementos HTML

    padro.

    Web Controls: So controles similares ao HTML Server Controls, porm possuem rico modelo de objeto contendo uma variedade de

    propriedades para estilo, detalhes de formatao. Alm de prover vrios eventos do lado servidor.

    HTML Server Controls

    HTML server controls so objetos de interface para os elementos padres do HTML. Eles possuem trs caractersticas:

    Gerao de sua prpria interface: Voc poder setar as propriedades atravs do cdigo e o HTML final ser gerado

    automaticamente quando sua pgina for renderizada e enviada para o cliente.

    Manter o estado dos objetos: Por causa da perda de estado na web, pginas web precisam fazer muito trabalho para manter o

    estado das informaes entre uma requisio e outra. Os controles HTML Server Controls fazem esta tarefa automaticamente para

    voc.

    Execuo de eventos do lado servidor: Por exemplo, botes executam um evento quando clicados, caixas de textos executam um

    evento quando seu contedo modificado, entre outros. Seu cdigo poder responder a estes eventos.

  • Exerccios

    1. Criar uma pgina web esttica que faa a converso de real para dlar americano, em seguida converte-la para uma pgina ASP.NET, implementando a funcionalidade de converso.

    Conversor de Valores Converter: Reais para U.S. dollars.

    A pgina web acima apenas uma pgina HTML esttica sem nenhuma funcionalidade. Uma pgina web HTML por si s no um web form.

    A forma mais fcil para converter a pgina web Conversor de Valores para pginas ASP.NET, voc dever criar um novo formulrio no visual studio. Para isto selecione o Website em seguida adicione um novo item. Na caixa de dilogo que ser aberta, selecione a opo Web Form, digite um novo para o nova pgina (como ConversorDeValores.aspx), e clique em Add para criar a nova pgina.

    Como novo web form aberto, exclua todo o contedo do arquivo .aspx exceto a diretiva da pgina (page directive). A diretiva das pginas ASP.NET trazem informaes bsicas sobre como o compilador ir compilar a pgina. Nesta diretiva voc indicar qual linguagem de programao ser usada. Se voc estiver usando um arquivo diferente para armazenar o cdigo fonte da pgina (Code-Behind), voc dever indicar o local de armazenamento do cdigo de fonte e tambm o nome da classe da pgina (Page class name).

    Finalmente, copie o contedo HTML da pgina esttica e no web form abaixo da diretiva do arquivo. Segue abaixo verso nova do arquivo com a diretiva arquivo em negrito.

    Conversor de Valores Converter: Reais para U.S. dollars.

    Agora iremos colocar o atributo runat=server em todas as tags que iremos transformar em um controle HTML Server Control, desta forma precisaremos informar tambm informar um ID nico para os objetos que desejarmos acessar atravs do cdigo.

    Em nossa pgina precisaremos incluir os atributos informados acima apenas no input textbox e tambm no boto submit. Adicionalmente a tag ser processada do lado do servidor para habilitar que o ASP.NET possa acessar os objetos contidos na pgina. Segue abaixo cdigo completo:

  • Inherits="ConversorDeValores" %>

    Conversor de Valores Converter: Reais para U.S. dollars.

    Aps incluso dos atributos Runat e ID nos elementos HTML, conseguiremos acessar tais controles atravs do cdigo fonte da pgina,

    basta digitarmos o identificador informado no elemento HTML (Veja imagem abaixo).

  • Eventos

    Quando o usurio clica no boto Converter e a pgina enviada novamente para o servidor web, o ASP.NET precisa saber exatamente qual cdigo voc deseja executar. Para criar a relao entre eventos e mtodos, voc precisa adicionar um atributo na Tag do controle. Por exemplo, se voc deseja executar algum cdigo quando o usurio clicar no boto, voc deve informar a propriedade OnServerClick com o nome do evento a ser executado:

    O ASP.NET permite que voc atravs do cdigo fonte da pgina, associe eventos aos controles da mesma, veja o exemplo abaixo:

    buttonConverter.ServerClick += new EventHandler(buttonConverter_ServerClick);

    Os HTML server controls permite apenas dois tipos de eventos, ServerClick e ServerChange. Veja abaixo a sintaxe de um mtodo associado a um evento:

    protected void buttonConverter_ServerClick(Object sender, EventArgs e)

    Onde o argumento (Object) o objeto que gerou o evento e o argumento (e) inclu informaes adicionais sobre o evento.

    ViewState

    Aps rodarmos uma aplicao ASP.NET, a primeira coisa que voc ir identificar que existem apenas pequenas alteraes no HTML esttico original.

    A primeira diferena a existncia do atributo runat=server, a segunda diferena e muito importante, que o ASP.NET gera automaticamente um objeto do tipo HiddenField. Segue abaixo cdigo:

    Conversor de Valores

    Converter: Reais para U.S. dollars.

    O controle Hidden Field armazena todas informaes dos controles contidos na pgina, estas informaes esto armazenadas em um formato de compresso (compressed format). Desta forma voc poder manipular as propriedades dos controles no cdigo fonte da pgina e persistir as informaes entre vrios posts em sua pgina.

    Classe Page

    Toda pgina web (web form) uma pagina customizada que tem como base a classe System.Web.UI.Page. A herana desta pgina faz com que seu web form adquire inmeras propriedades e mtodos. Veja tabela abaixo as propriedades fundamentas de uma pgina.

    Propriedade Descrio

    IsPostBack Propriedade (Boolean) indicativa de carregamento inicial da tela ou se a mesma esta

    sendo enviada novamente ao servidor (post).EnableViewState

    Indica se o formulrio ir manter ou no as informaes dos controles da pgina, esta

  • propriedade sobrescreve as propriedades dos controles.

    Application Coleo de informaes compartilhadas entre todos os usurios do site.Session Coleo de informaes de um nico usurio e poder ser utilizado por diversas pginas.

    Request Referncia para o objeto HttpRequest que contm todas as informaes da requsio

    atual da pgina.

    Response Referncia ao objeto HttpResponse que representa a resposta ASP.NET que ser enviada

    ao browser do usurio.

    Server Referncia ao objeto HttpServerUtility, este objeto permite que voc faa algumas tarefas

    como mapear o caminho do servidor entre outros.

    Voc poder usar estas propriedades em todo seu cdigo, veja abaixo um exemplo onde iremos redirecionar o usurio para uma nova pgina.

    Response.Redirect("novapagina.aspx");

  • Application Events (Eventos de aplicao)

    Application Events no so to importantes quanto os eventos que encontramos em nossos Server Controls, porm a casos em que necesitamos executar alguma tarefa adicional. Exemplo: Usando Application Events voc poder gravar fcilmente um log sempre que uma requisio for recebida.

    Para capturarmos Application Events precisaremos usar o arquivo Global.asax

    Arquivo Glogal.asax

    O arquivo global.asax permite que voc escreva cdigos de resposta a eventos globais da aplicao. Este eventos so chamados em vrios pontos durante o ciclo de vida de uma aplicao web.

    O arquivo globo.asax parecido com o arquivo .aspx com exceo de que ele no contm nenhum HTML or ASP.NET tags, por outro lado contm declaraes de eventos.

    O seguinte arquivo global.asax ir reagir ao evento: Application.EndRequest, que acontecer antes de da pgina ser enviada para o usurio.

    protected void Application_OnEndRequest() { Response.Write("Esta pgina foi processada s " + DateTime.Now.ToString());}

    Veja abaixo lista de eventos adicionais do arquivo Global.asax

    Application_Start; Application_End; Application_BeginRequest; Application_EndRequest; Session_Start; Session_End; Application_Erro;

  • ASP.NET Configuration

    Toda aplicao web possu um arquivo web.config para setar configuraes fundamentais de seu funcionamento. Configuraes como Custom Erros (erros customizados), configuraes de segurana, entre outros. O web.config possu algumas vantagens, veja abaixo:

    No h necessidade de para a aplicao para alterar alguma configurao.

    Fcil acesso ao arquivo e replicao, uma vez que voc possu permisso de acesso ao servidor, voc poder remotamente alterar as configuraes ou at mesmo copiar o web.config de uma aplicao para outra.

    Configuraes de fcil entendimento humano, no h a necessidade de uma ferramenta especial para edio ou entendimento de seu contedo.

    O arquivo Web.Config

    O arquivo Web.Config usa o formato XML. Todo contedo deste arquivo esta dentro do elemento raiz (root) . Dentro deste elemento existe vrios outras sub-sees. Veja abaixo a estrutura bsica de um arquivo web.Config com as trs sees mais importantes:

    ... ... ...

    Configuraes Customizadas

    O ASP.NET permite que voc adicione no web.config configuraes customizadas no elemento , veja abaixo a estrutura bsica para adicionar configuraes customizadas:

    > ASP.NET Configuration.

  • CAPITULO 5 WEB CONTROLS

    Os HTML controls so muito limitados em relao aos web controls, por exemplo, uma HTML control corresponde a uma tag HTML enquanto um web control no possu tal limitao. Por exemplo um nico objeto como TextBox poder assumir um entre trs elementos: , , .

    Veja abaixo uma lista de Web Controls Bsicos:`

    Control Class Elemento HTMLLabel

    Button ou TextBox , , ou

    CheckBox RadioButton Hyperlink LinkButton contm uma tag ImageButton Image ListBox onde X o nmero de linhas visveisDropDownList

    CheckBoxList Uma lista ou com multiplos tagsRadioButtonList Uma lista ou com multiplos tagsBulletedList lista enumerada ou lista no enumeradas (bulleted)Panel Table, TableRow e

    TableCell , , e ou

  • Uma Tag Web Control

    As tags ASP.NET possuem um formato especial, elas sempre comeam com o prefixo: asp: seguido do nome da classe. Se a mesma no possuir uma tag de fechamento a mesma finalizada com />. Todos os atributos da tag podero ser processados no servidor com exceo do atributo runat=server.

    Veja o exemplo de um ASP.NET TextBox:

    Quando um cliente requisita uma pgina .aspx, o seguinte HTML retornado:

    WebControl base class

    A maioria dos web controls so derivados da classe WebControl. Esta classe define funcionalidade essenciais como data binding e inclu propriedades que so usadas pela maioria dos web controls. Veja algumas propriedades abaixo:

    AccessKey; Font;BackColor, ForeColor, BorderColor; Height e Width;BorderWidth; Page;BorderStyle; Parent;Controls; TabIndex;Enabled; ToolTip;EnabledViewState Visible;

  • Events e AutoPostBack

    Muitos eventos como o Click ocorrem imediatamente, pois quando clicados eles o boto realiza o post back na pgina, o que uma convenso bsica nos HTML forms, porm outras aes podem causar a chamada de um evento mas no podem realizar um post back. Por exemplo, quando o usurio altera um texto de um TextBox ou escolhe um item em uma lista, voc deseja responder aos eventos ocorridos porem sem um post back isto no ser possvel.

    Voc poder usar o automatic post back para forar que um controle execute um post back imediatamente quando detectar alguma ao do usurio.

  • CAPITULO 6 STATE MANAGEMENT

    Uma das maiores diferenas entre os modelos de programao para web e o modelo de programao para desktop o state management (armazenamento de estado). Como voc ir armazenar as informaes no ciclo de vida de uma aplicao. Informaes simples como nome do usurio, ou informaes mais complexas como carrinho de compras de um e-commerce.

    ViewState

    Uma forma comum de armazenar informaes o view state. View state usa o elemento HTML hidden field, que o ASP.NET insere automaticamente no final da renderizao da pgina. Anteriormente estudamos que os HTML server controls e web controls utilizam o view state para manter seus valores, porm o view state no limitado a apenas web controls. Sua pgina poder adicionar informaes diretamente no view state da pgina e poder recuperar tais informaes quando a pgina for carregada novamente (post back).

    ViewState Collection

    A propriedade da pgina ViewState contm as informaes do view state corrente da pgina. Esta propriedade uma instncia da classe StateBag. State Bag um tipo de coleo chamado dictornary, neste tipo de coleo os itens so identificados por nome.

    Exemplo:

    this.ViewState[Contador] = 1;

    Veja abaixo, o cdigo para recuperar o valor da variavel contador do view state,

    Int32 contador = (Int32)this.ViewState[Contador];

    Cross-Page Posting

    Cross-Page postback uma extenso do mecanismo postback que estamos anteriormente, voc poder enviar o usurio para outra pgina, enviando todas as informaes para a outra pgina. Para isto o ASP.NET tem uma nova propriedade chamada PostBackUrl, que esta definida na interface IButtonControl, os controles ImageButton, LinkButton e Button implementam esta interface.

    Exemplo:

    Na pgina CorssPage2.aspx voc poder recuperar as informaes da pgina que enviou o usurio atravs da propriedade PreviousPage da classe Page. Esta propriedade uma instncia da classe Page, desta forma se precisarmos de informaes simples como titulo da pgina poderemos faze-l diretamente, porm para recuperar informaes mais detalhas como um valor de um TextBox precisaremos fazer um cast para a pgina que enviou o usurio. Veja o exemplo abaixo:

    protected void Page_Load(object sender, EventArgs e) {

    CrossPage1 prevPage = PreviousPage as CrossPage1;

    if (prevPage != null) {

    // Cdigo de leitura das informaes do web form.

    }

    }

    Voc tambm poder associar o tipo da propriedade da seguinte forma:

  • CAPITULO 7 TRATAMENTO DE ERRO, LOG E TRACE

    Nenhum software executa livre de erros, aplicaes web tambm no. Seu cdigo poder ser interrompido a qualquer momentos, seja por um dado invlido, alguma circunstncia no tratada at mesmo um erro de hardware.

    Erros Comuns

    Um erro pode ocorrer em vrias situaes, vrias situaes comuns como, a diviso por zero, a conexo com algum arquivo ou banco de dados.Um tipo de erro muito comum o erro de null reference excpetion, que ocorre quando tentamos acessar um objeto ainda no instanciado. Quando um erro ocorre em seu cdigo o .NET verifica se existe algum tratamento de erro no escopo da execuo do seu cdigo (error handlers), caso nenhum tratamento de erro for encontrado, ento a execuo do seu cdigo abortada e uma pgina de erro exibida no browser.

    Exception Handling

    A maioria das linguagens .NET possuem um formato para recuperar uma exceo (structured exception handling). Quando um erro ocorre na sua aplicao, o .NET Framework cria uma exceo (exception), objeto quer ir representar o erro.

    Toda exceo derivada da classe Exception, esta classe possu propriedades com informaes do erro ocorrido, por exemplo se tentarmos acessar um objeto que ainda no foi instanciado, a propriedade Message ter o seguinte contedo: Object reference not set to an instance of an object.

    Quando recuperarmos um erro no ASP.NET poderemos recuperar excees genricas ou excees especificas, por exemplo se quisermos recuperar apenas erro de diviso por zero, poderemos verificar se a execeo ocorrida foi uma exceo do tipo DivideByZeroException.

    Para recuperarmos um erro com .NET, veja a sintaxe abaixo:

    try {

    // Cdigo fonte.

    }

    catch {

    // Cdigo de tratamento do erro.

    } finally {

    // Cdigo a ser executado mesmo que um erro tenha ocorrido.

    }

    Recuperando erros especficos:

    catch ( NullReferenceException erro) { // Cdigo de tratamento do erro.

    } catch ( Exception erro) {

    // Cdigo de tratamento do erro.

    }

  • Voc poder criar suas prprias excees, basta criar uma instncia do objeto Exception. Veja o cdigo abaixo:

    private decimal DividirNumeros(decimal numero, decimal divisor) {

    if (divisor == 0) {

    CustomDivideByZeroException erro = new CustomDivideByZeroException();

    erro.DividingNumber = numero;

    throw erro;

    } else {

    return numero/divisor;

    }

    }

    Log de Excees

    Em muitos casos necessitamos gravar logs, no s quando alguma exceo detectada. O .NET possu vrias formas de gravao, seja enviando um e-mail, adicionando um registro em uma base de dados ou criar um arquivo. Atravs do .NET podemos gravar logs tambm no Event Viewer do windows (que disponvel para qualquer aplicao).

    Escrevendo um Log de Evento

    Com o ASP.NET, poderemos criar facilmente Logs de Eventos, basta utilizarmos as classes do namespace System.Diagnostics. Primeiramente devemos importar o namespace no cdigo fonte: using System.Diagnostics;

    O seguinte cdigo ir gravar um log usando o Event Log:

    public partial class ErrorTestLog : Page {

    protected void cmdCompute_Click(Object sender, EventArgs e) {

    try {

    decimal a, b, result;

    a = Decimal.Parse(txtA.Text);

    b = Decimal.Parse(txtB.Text);

    result = a / b;

    lblResult.Text = result.ToString();

    lblResult.ForeColor = System.Drawing.Color.Black;

    } catch (Exception err) {

    lblResult.Text = "Message: " + err.Message + "";

    lblResult.Text += "Source: " + err.Source + "";

    lblResult.Text += "Stack Trace: " + err.StackTrace;

    lblResult.ForeColor = System.Drawing.Color.Red;

    // Escrevendo as informaes no Log de evento do windows.

    EventLog log = new EventLog();

    log.Source = "DivisionPage";

    log.WriteEntry(err.Message, EventLogEntryType.Error);

    }

    }

    }

    O cdigo acima ir gravar um log de evento no log chamada Application pois no informamos ao ASP.NET qual log o mesmo deveria gravar.

    NOTA:As aplicaes web utilizam a conta de usurio ASPNET para realizar algumas tarefas no servidor, por exemplo, gravao de log no Event Viewer, e para que a gravao seja realizada com sucesso ser necessrio conceder permisso de gravao e leitura no Event

  • Viewer para o usurio ASPNET ou grupo que o mesmo pertence, para isto basta conceder as devidas permisses na seguinte chave de registro (regedit.exe):

    HKEY_Local_Machine\SYSTEM\CurrentControlSet\Services\EventLog

    Log Customizados

    Voc poder criar seus prprios event log, por exemplo, se voc quiser criar um log com o nome da sua empresa ou at mesmo o nome do sistema. Para isto veja o exemplo abaixo:

    if (!EventLog.SourceExists("Stefanini")) {

    EventLog.CreateEventSource("Log de Eventos", "Stefanini");

    }

    EventLog log = new EventLog("Stefanini");

    log.Source = "Log de Eventos";

    log.WriteEntry(erro.ToString(), EventLogEntryType.Error);

    Trace

    As vezes precisamos recuperar as informaes para verificarmos como nossa aplicao esta executando algum pedao de cdigo ou verificarmos suas regras de negcio. ASP.NET tem uma funcionalidade chamada Tracing, que nos trs um relatrio com o diagnstico da execuo das pginas web.

    Habilitando Tracing

    Para usarmos o tracing, precisamos habilitar explicitamente. Existe duas maneiras de habilitarmos o trancing em pginas ASP.NET:

    Ou atravs do cdigo fonte da pgina

    protected void Page_Load(Object sender, EventArgs e) {

    Trace.IsEnabled = true;

    }

    O ASP.NET permite que voc habilite o tracing para toda aplicao para isto basta utilizarmos o web.config, veja o exemplo abaixo:

    Com o visual studio, conseguimos depurar nossas aplicaes e verificarmos as regras de negcio sem a necessidade do trancing, desta forma o tracing maior utilizado quando publicamos uma aplicao ASP.NET.

    Escrevendo informaes no Tracing

    Para escrever uma mensagem no tracing, use o mtodo Write(), mtodo Warn() atravs do objeto Trace. Este mtodos so equivalente com apenas uma diferena, o mtodo Warn() escreve os logs com cor vermelha. Veja o exemplo abaixo:

    private void ExibirDataHora() {

    Trace.Write("Setando a data e hora do sistema.");

    Try {

    String data = textBoxDataHora.Text;

    labelDataHora.Text = Convert.ToDateTime(data).ToString("dd/MM/yyyy HH:mm");

    } catch (Exception erro) {

    Trace.Warn(erro.Message);

    }

  • }

  • CAPITULO 8 VALIDAES

    No desenvolvimento de aplicao se faz necessrio a realizao de validaes nos campos de entradas informados pelo usurio. O ASP.NET possu alguns controles de validaes so eles:

    Controle DescrioRequiredFieldValidator Verifica se o usurio informou ou no um controle de entrada.

    RangeValidator Verifica se o usurio informou ou no um valor contido no conjunto de nmero,

    caracteres ou datas.

    CompareValidator Verifica se o usurio informou ou no um valor de um controle igual ao valor de outro

    controle.RegularExpressionValidator Valida se o usurio informou um valor de acordo com a expresso regular informada.

    CustomValidator A validao realizada pelo cdigo definido pelo usurio.

    Voc poder associar a um nico controle de entrada (web control) um ou mais controles de validaes.

    Validao do lado do servidor (Server-Side Validation)

    Uma prtica comum realizar a validao do envio de uma pgina manualmente em seu cdigo fonte. Quando voc utiliza validao automtica, a pgina iniciada normalmente e o usurio informa os dados dos controles da pgina, quando o usurio clica em algum boto para enviar a pgina para o servidor (submit form). Todos os botes da pgina possuem a propriedade CausesValidation, que pode assumir True ou False. O que acontece quando o usurio clica no boto:

    Se a propriedade CausesValidation for False, o APS.NET ignora os controles de validao e a pgina enviada (posted back) Se a propriedade for True, o ASP.NET automaticamente ir validar a pgina quando o usurio clicar em algum boto. Se

    algum controle de validao encontrar algum erro, a pgina retornada para o usurio com informaes do erro.

    Validao do lado do cliente (Client-Side Validation)

    Esta validao a mais comum, o ASP.NET adiciona automaticamente codigos JavaScript do lado cliente para realizao das validaes. Neste caso, se algum controle de validao encontrar um erro, o usurio receber uma mensagem na tela e a pgina no ser enviada para o servidor.

  • Classe BaseValidator

    Todo controle de validao so derivados da classe BaseValidor. Esta classe define as funcionalidades bsicas dos controles de validaes. Veja abaixo suas principais propriedades:

    ControleToValidate ErroMessageForeColor DisplayIsValid EnabledEnabledClientScript

    Validao Simples

    Para voc melhor entender como os controles de validao funcionam, vamos criar uma pgina simples que ir usar um web controle Button e dois controles TextBox e usaremos os control RangeValidator para validar o primeiro TextBox, se a validao falhar uma mensagem ser exibida para o usurio. Veja imagem abaixo:

    A declarao do RangeValidator deve ser igual ao seguinte exemplo:

    Voc poder verificar em seu cdigo fonte se a validao falhou ou no, para isto veja o exemplo abaixo:

    protected void cmdEnviar_Click(object sender, EventArgs e) {

    if (rangeValidator.IsValid) {

    labelSucesso.Text = "Validao realizada com sucesso!";

    }

    }

  • Outras formas de exibio

    O ASP.NET permite que voc exiba as mensagens de erros em um outro local, por exemplo se voc deseja exibir uma lista com todos os erros encontrados voc poder utilizar o controle ValidationSummary. Este objeto ir exibir a lista de erros encontrados na pgina. Voc deve setar a propriedade Display dos controles de validao para None.

    Veja a declarao de um controle ValidationSummary:

    Veja imagem abaixo:

    Validaes Customizadas

    Com o controle CustomValidator voc poder realizar validaes especficas de acordo com a regra de negcio da sua pgina. Por exemplo se voc quiser validar o cdigo do pedido de uma loja virutal, voc poder utilizar o CustomValidator e no cdigo fonte de sua pgina voc dever criar o mtodo que ir realizar as validaes necessrias. Veja declarao do mtodo de validao e atente para o argumento do tipo ServerValidateEventArgs.

    Veja o cdigo abaixo com a delcarao do mtodo de validao do lado do servidor:

    protected void customValidator_ServerValidate(Object sender, ServerValidateEventArgs e) {

    try {

    e.IsValid = (e.Value == 10);

    } catch {

    e.IsValid = false;

    }

    }

  • Esta validao tambm poder ser feita do lado do client utilizando JavaScript, basta declarar o mtodo de validao no JavaScript da seguinte forma:

    function ValidarPedido(objeto, argumentos) {

    var numero = argumentos.Value;

    if (numero == 10) {

    argumentos.IsValid = true;

    } else {

    argumentos.IsValid = false;

    }

    }

    A declarao da tag do Custom Validator ficar da seguinte forma:

  • CAPITULO 9 USER CONTROLS

    Para aperfeioar o desenvolvimento de pginas web, o ASP.NET possu o User Control, que um eficiente modo de reutilizarmos pedaos da interface do usurio.User Control se parece muito com web forms com algumas diferenas, so elas:

    Extenso do arquivo, os user controls possuem a extenso .ascx; O arquivo .ascx comea com a diretiva ao contrrio de uma pgina que comea com ; User Controls no podem ser requisitados pelo web browser, deve ser includos dentre de uma pgina web.

    Veja abaixo um exemplo de um User Control

    Para utilizar um User Control dentro de um web form voc precisa registrar o controle no web form desejado. Para registrar um User Control dentro do seu web form use o no inicio de sua pgina. Veja exemplo abaixo:

  • CAPITULO 10 ESTILOS E MASTER PAGES

    Estilos (Style)

    No desenvolvimento de pginas web, designer formatam seus documentos utilizando recursos de formatao do HTML, os recursos formatao do HTML as vezes so limitadas, inconsistentes.

    Uma tima soluo o padro CSS suportado pela maioria dos browsers hoje em dia. CSS possui inmeras propriedades de formataes consistentes para qualquer elemento HTML. Estilos como borda, fonte, cores entre vrias outras.

    Tipos de Estilos

    Uma pgina web pode usar trs tipos de formatao:

    Inline style: So estilos aplicados diretamente na tag do elemento HTML;

    Este um fundo azul.

    Internal Style sheet: So uma coleo de estilos que so colocados dentro da tag ;

    External Style sheet: So uma coleo de estilos similar ao internal com uma diferena, os stilos so armazenados em um arquivo separado com extenso .css;

    Themes (Tema)

    Com a convenso do CSS Styles atualmente, os CSS rules so limitados por serem fixos. Os controles ASP.NET como Calendar, CheckBoxList por serem controles mais complexos no conseguem exibir as formataes corretamente, desta forma se quisermos colocar algum stilo nestes controles necessitamos coloca-los manualmente. O ASP.NET traz um novo recuso para resolver este problema, este recursos se chama Theme (tema).

    Como Themes Funcionam

    Todos os temas so aplicaes especficas. Para utilizar um tema em sua aplicao web voc dever criar uma pasta para o mesmo. Esta pasta dever ficar armazenada na pasta especial App_Themes, que dever estar na raiz da sua aplicao web. Sua aplicao poder conter vrios temas, e todos eles devero estar armazenados dentro da pasta App_Themes, porm cada um com sua prpria pasta. Apenas um tema poder esta ativo na pgina.

    Para criar seu tema, voc deve criar um skin dentro de sua pasta, Um arquivo skin um arquivo texto com a extenso .skin. Um arquivo skin basicamente uma lista de tags de um controle. As tags de um controle dentro do arquivo de skin no precisa estar definitivamente completa, basta setar apenas as propriedades que voc deseja padronizar (um tema pode conter mais de um skin). Por exemplo, se quiser padronizar as cores da fonte de um controle e o fundo do controle dentro atravs de um arquivo skin, use a seguinte sintaxe:

    Na declarao acima apenas a propriedade runa=server obrigatria o restante opcional.

    Para aplicar um tema na sua pgina Web, basta ajustar a propriedade Theme da diretiva de pgina com o nome da pasta do seu tema.

  • Quando voc aplica um tema em uma pgina Web, o tema ser aplicado a todos os controles da sua pgina web, de acordo com as configuraes indicadas no arquivo de Skin. Veja o exemplo abaixo:

  • Master Page

    Muitas vezes no desenvolvimento de web sites, existem partes de uma pgina que desejamos adicion-la em todas as pginas do site. Por exemplo, o menu de uma aplicao web, informaes do usurio logado, entre outros.

    Para resolvermos este problema sem a necessidade de duplicao de cdigo, devemos utilizar a nova ferramenta Master Page do ASP.NET, Master Pages permiti que voc defina uma estrutura bsica para o web site, desta forma voc poder utiliza-lo em toda sua aplicao.

    Uma Master Page similar a uma pgina ASP.NET, voc poder incluir elementos HTML, web controls e cdigos. Master pages possuem a extenso .master, uma master page no pode ser exibida diretamente no browser. Uma master page dever utilizar outras pginas, que so conhecidas como content pages. Uma master page define a estrutura do site e as content pages definem a estrutura e contedo a ser exibido.

    Criando uma Master Page

    Aps criar uma master page utilizando o visual studio, voc ver uma pgina em branco que possu um controle chamado ContentPlaceHolder. ContentPlaceHolder uma parte da sua master page que poder ser alterada, todo o restante do contedo no poder ser alterado. Veja imagem abaixo:

  • Utilizando uma MasterPage

    Definir a(s) pgina(s) de contedo simples e pode ser feito de quatro maneiras diferentes:

    Durante a criao da pgina, na caixa de dialogo Add New Item, marque a opo Select Master Page

    Ser exibida a caixa de dialogo Master Page, que exibe as Master Pages disponveis no projeto:

  • 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 na 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, em tempo de execuo:

    protected void Page_PreInit(object sender, EventArgs e) { Page.MasterPageFile = "~/MasterUm.master";}

    A defninio de uma pagina Master em tempo de execuo deve ser feito no evento PreInit da pgina. Obviamente que esta ltima forma nos priva dos benefcios 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:

    Detalhes do layout: Cor do fundo do Titulo: #FF9933 / Cor do fundo menu: #00CC66 Fonte do titulo: Trebuchet MS, tamanho: 25px, cor da fonte: #333333 Fonte do menu: Verdana, tamanho: 12px, cor da fonte: #333333

    Para o titulo Loja Virtual voc dever criar um controle do tipo label, para o resumos dos pedidos do usurio voc dever criar um web user control, para o menu, criar quarto quatro controles, que devero funcionar como HyperLinks, utilize controles do tipo HyperLinks, defina a propriedade text de cada um como home, produtos, cadastro e pedido. A propriedade NavigateUrl de cada um deve ser definida pelo mesmo contedo da propriedade text mais a exteso aspx, por exemplo: produtos.aspx.

  • Master Page e mltiplos Content Regions (ContentPlaceHolder)

    Master pages no so limitadas a apenas um ContentPlaceHolder, voc poder adicionar vrios outros pontos onde a pgina ser dividida. Veja o exemplo abaixo:

    Outros Links

    Curso ASP.NET Bsico.

  • CAPITULO 11 WEB SITE NAVIGATION

    O ASP.NET traz na caixa de ferramentas (Toolbox) um novo controle destinados a navegao: SiteMap.

    O SiteMapPath possibilita criar de maneira muito simples um mapa de navegao do site, bastando cadastrar as urls e automaticamente ele j vai indicando em que url o usurio se encontra.

    O primeiro passo adicionar um arquivo Web.Sitemap, para isso v ao Solution Explorer , projeto e depois Add New Item e escolha o template Site Map conforme abaixo. Esse template vai gerar o arquivo no formato XML que contm todos links do site que sero utilizados na navegao.

    Confira o contedo do arquivo:

    Voc deve incluir na pgina o controle SiteMapDataSource, este objeto estar visvel na parte de Design de sua pgina porm ele no ser exibido na tela do usurio.

    Em seguida voc dever adicionar o controle SiteMapPath (que esta na ToolBox de navegao (Navigation)) que estar ligado ao controle SiteMapDataSource criado anteriormente. Aps incluso do objeto, voc poder configur-lo da forma que bem entender, veja algumas propriedades como fonte, cor, tamanho da fonte, separador de pginas entre outros.

  • Se voc executar sua aplicao, ver uma trilha contendo a navegao do usurio em seu sistema, cada pgina exibida na trilha tem o seu link relativo, podendo o usurio clicar no nvel que deseja navegar. Veja imagem abaixo:

  • PARTE III TRABALHANDO COM DADOS

    CAPITULO 12 FUNDAMENTOS DO ADO.NET

    O ADO.NET confia suas funcionalidades a um pequeno conjunto de classe, que podem ser dividas em dois gurpos, algumas usadas para controlar e armazenar dados, como DataSet, DataTable ou DataRows). E aqueles que so usados para conectar a uma fonte de dados especficas, tais como Connection, Command e DataReader.

    As classes de controle e armazenamento so genricas, no importa qua fonte de dados voc ir utilizar em sua aplicao, uma vez que voc extraiu os dados, os mesmos podero ser armazenados nos diversos controles de armazenamento, especialmente em um DataSet. A idia de um DataSet manter a estrutura de um banco de dados porm em memria, podendo incluir tabelas, linhas, colunas.

    O segundo grupo de classes existe em diversos fatores diferente. O conjunto de classes de interao com uma base de dados chamado de ADO.NET data provider. Os data providers so customizados de modo que cada um execute as interaes com a fonte de dados especfica. Por exemplo: SQL Data Provider foi criado para trabalhar com base SQL Server 7.0 ou superior, para se trabalhar com Oracle, existe o Oracle Provider e assim por diante.

    As classes de provider so derivadas de uma mesma classe base, implementam a mesmas interfaces que expem mtodos e propriedades comuns. O .NET possu os seguintes Data Providers:

    SQL Server Provider OLE DB Provider ORACLE Provider ODBC Provider

  • Para um melhor entendimento, veja a imagem abaixo para entender como o ADO.NET trabalha.

  • Data Namespaces

    Veja a tabela abaixo com os namespaces do ADO.NET:

    Namespaces Funes

    System.Data Contm classes fundamentais de compe as funcionalidades do ADO.NET como

    DataSet, DataTable e etc.

    System.Data.OleDb Contm as classes de conexo e execuo de uma base de dados atravs do OLE DB,

    como OleDbConnection, OleDbCommand.

    System.Data.SqlClient Contm as classes de conexo e execuo de uma base do SQL Server verso 7.0 ou

    superior, como SQLConnection, SQLCommand.

    System.Data.SqlTypes Contm estrutura dos tipos de dados de uma base SQL Server, desta forma quando for

    trabalhar com este tipo de banco, use os tipos deste namespace.

    System.Data.OracleClient Contm as classes de conexo e execuo de uma base do Oracle, como

    OracleConnection, OracleCommand.

    System.Data.Odbc Contm as classes de conexo e execuo de uma base atravs dos ODBC Drives, como

    OdbcConnection, OdbcCommand.

    Veja abaixo lista de classe do ADO.NET Data Providers

    Connection (SQLConnection, OracleConnection, OleDbConnection, OdbcConnection) Command (SQLCommand, OracleCommand, OledDbCommand, OdbcCommand) DataReader (SQLDataReader, OracleDataReader, OleDbDataReader, OdbcDataReader) DataAdapter (SQLDataAdapter, OracleDataAdapter, OleDbDataAdapter, OdbcDataAdapter)

    Em todos os nossos exemplos utilizaremos uma base SQL Server, portanto importem o namespace da seguinte forma:

    using System.Data;

    using System.Data.SqlClient;

    Criando uma conexo

    Para criar uma conexo com o banco de dados SQL Server utilize o objeto SqlConnection, atravs da propriedade ConnectionString, a ConnectionString deve conter os seguintes parmetros:

    Data source: Indica o nome do servidor do banco de dados.

    Initial Catalog: Indica o nome do banco de dados a ser utilizado.

    User Id: Indica qual usurio ser utilizada para acessar o banco de dados.Password: Indica a senha do usurio;ConnectionTimeout: Determina quanto tempo seu cdigo ir esperar (em segundos) para abrir uma conexo com o banco e dados, quando este tempo for alcanado uma exceo ser lanada.

    Veja abaixo um exemplo de uma ConnectionString:

    Data Source=Servidor; Initial Catalog=Banco de dados; User Id=Usurio; Password=Senha

    Voc poder utilizar o web.config para armazenar a string de conxo com o banco de dados a ser utilizado pela sua aplicao web, veja o cdigo abaixo:

  • Para recuperar a string de conexo armazenada no arquivo de configurao da sua aplicao, veja o cdigo abaixo:

    String connectionString = WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;

    Para realizar a conexo com a base de dados utilize a classe SqlConnection, configure a string de conexo a ser utilizada e utilize o

    mtodo Open() para abrir a conexo com a base de dados. Veja o cdigo abaixo:

    SqlConnection sqlConnection = new SqlConnection(connectionString);

    try

    {

    sqlConnection.Open();

    lblInfo.Text = "Verso Servidor: " + sqlConnection.ServerVersion;

    lblInfo.Text += "A Conexo esta: " + sqlConnection.State.ToString();

    } catch (Exception erro) {

    lblInfo.Text = "Erro ao abrir conexo com a base de dados!";

    lblInfo.Text += erro.Message;

    } finally {

    sqlConnection.Close();

    lblInfo.Text += "Agora a conexo esta: ";

    lblInfo.Text += sqlConnection.State.ToString();

    }

  • Comando Select

    O objeto de conexo possu propriedades bsicas para apenas conectar com uma base de dados, para recuperarmos informaes da

    base de dados necessitaremos dos seguintes itens:

    Comando SQL para recuperao das informaes da base;

    Objeto Command para executar o comando SQL;

    Um objeto DataReader ou DataSet para acessar os registros retornados;

    Um Objeto Command representa um comando SQL. Para usar um objeto Command, voc dever informar o comando SQL a ser

    executado uma conexo disponvel e ento execute o comando. Veja o exemplo abaixo:

    SqlCommand sqlCommand = new SqlCommand();

    sqlCommand.Connection = sqlConnection;

    sqlCommand.CommandText = "SELECT * FROM Authors ORDER BY au_lname ";

    OBS.: Voc poder usar o construtor do objeto Command para informar as propriedades visualizadas acima.

    Usando um DataReader

    Uma vez que seu objeto Command foi definido, voc precisa decidir como voc deseja recuperar as informaes, a forma mais simples

    o uso de um DataReader. Um DataReader mantm a conexo com a base de dados aberta enquanto l os registros da base, ao

    finalizar a leitura dos registros voc dever fechar a conexo com a base caso contrrio a mesma ficar aberta.

    Antes de voc usar um objeto DataReader assegur-se que sua conexo com a base de dados esteja aberta. Para criar um objeto

    DataRader use o mtodo ExecuteReader() de um objeto Command. Veja o exemplo abaixo:

    SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

    Com o objeto DataReader preenchido, voc dever utilizar o mtodo Read() para recuperar um nico registro do objeto.

    sqlDataReader.Read()

    Voc poder acessar os valores do registro corrente atravs de um campo especfico, Veja o exemplo abaixo:

    lstNomes.Items.Add( sqlDataReader[au_lname]);

    Para mover para o prximo registro voc dever utilizar o mtod Read() novamente. Se este mtodo retornar True, quer dizer que

    ainda existem um registro em seu DataReader, caso contrrio no h mais dados no objeto. Assim que voc terminar a utilizao do

    objeto DataRader voc dever fechar o objeto quanto o objeto de conexo.

    Veja agora como percorrer os registros de um DataReader:

    private void CarregarListBoxAutores() {

    String connectionString = WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;

    SqlConnection sqlConnection = new SqlConnection(connectionString);

    sqlConnection.Open();

    sqlCommand sqlCommand = new SqlCommand(SELECT * FROM Authors ORDER BY au_lname, sqlConnection);

    SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();

  • while (sqlDataReader.Read())

    {

    ListItem newItem = new ListItem();

    newItem.Text = sqlDataReader ["au_lname"] + ", " + sqlDataReader ["au_fname"];

    newItem.Value = sqlDataReader ["au_id"].ToString();

    lstAuthor.Items.Add(newItem); // Onde lstAuthor e um controle do tipo asp:ListBox

    }

    sqlDataReader.Close();

    sqlConnection.Close();

    }

    Adicionando, Atualizando e Excluindo Dados

    Agora que j sabemos como recuperar informaes da base de dados, iremos aprender como adicionar, atualizar e excluir dados. Para

    todas estas operaes (Insert, Update e Delete) utilizaremos o objeto Command para executa-las, devemos utilizar o mtodo

    ExecuteNonQuery(). Este mtodo retorna o nmero de linhas (rows) afetadas pelo comando.

  • Adicionando um Registro (Insert)

    Para adicionar um registro veja o cdigo exemplo abaixo:

    private String GetConnectionString() {

    return ConfigurationManager.ConnectionStrings["dbLoja"].ConnectionString;

    }

    private void AdicionarRegistro() {

    String insertSQL;

    insertSQL = String.Format("INSERT INTO Cliente (Nome, Email) VALUES ('{0}', '{1}')", txtNome.Text, txtEmail.Text);

    SqlConnection con = new SqlConnection(GetConnectionString());

    SqlCommand cmd = new SqlCommand(insertSQL, con);

    int adicionados = 0;

    try {

    con.Open();

    adicionados = cmd.ExecuteNonQuery();

    lblResultado.Text = adicionados.ToString() + " registro(s) adicionado(s).";

    } catch (Exception err) {

    lblResultado.Text = "Erro adicionando um registro. ";

    lblResultado.Text += err.Message;

    } finally {

    con.Close();

    }

    }

  • O cdigo acima adicionar um registro na base de dados corretamente, porm no o mtodo mais seguro, como podem ver se o usurio adicionar um apostrofo na caixa de texto de entrada um erro de sintaxe ser lanado ou at permitir que usurios alterem dados da sua base atravs de SQL Injection Attack. Para resolver isto devemos utilizar um comando parametrizado, veja abaixo como criar um comando parametrizado.

    private void AdicionarRegistro() {

    String insertSQL;

    insertSQL = "INSERT INTO Cliente (Nome, Email) VALUES (@Nome, @Email)";

    SqlConnection con = new SqlConnection(GetConnectionString());

    SqlCommand cmd = new SqlCommand(insertSQL, con);

    cmd.Parameters.AddWithValue("@Nome", txtNome.Text);

    cmd.Parameters.AddWithValue("@Email", txtEmail);

    int adicionados = 0;

    try {

    con.Open();

    adicionados = cmd.ExecuteNonQuery();

    lblResultado.Text = adicionados.ToString() + " registro(s) adicionado(s).";

    } catch (Exception err) {

    lblResultado.Text = "Erro adicionando um registro. ";

    lblResultado.Text += err.Message;

    } finally {

    con.Close();

    }

    }

  • Atualizando um Registro (Insert)

    Para adicionar um registro veja o cdigo exemplo abaixo:

    private void AtualizandoRegistro(Int16 codigoCliente) {

    String insertSQL; insertSQL = "UPDATE Cliente SET Nome = @Nome, Email = @Email WHERE CodCliente = @CodCliente";

    SqlConnection con = new SqlConnection(GetConnectionString()); SqlCommand cmd = new SqlCommand(insertSQL, con);

    cmd.Parameters.AddWithValue("@Nome", txtNome.Text); cmd.Parameters.AddWithValue("@Email", txtEmail.Text); cmd.Parameters.AddWithValue("@CodCliente", codigoCliente);

    int atualizados = 0;

    try { con.Open(); atualizados = cmd.ExecuteNonQuery(); lblResultado.Text = atualizados.ToString() + " registro(s) atualizado(s).";

    } catch (Exception err) { lblResultado.Text = "Erro adicionando um registro. "; lblResultado.Text += err.Message;

    } finally { con.Close(); }}

    Atualizando um Registro (Insert)

    Para adicionar um registro veja o cdigo exemplo abaixo:

    private void ExcluindoRegistro(Int16 codigoCliente) { String insertSQL; insertSQL = "DELETE FROM Cliente WHERE CodCliente = @CodCliente";

    SqlConnection con = new SqlConnection(GetConnectionString()); SqlCommand cmd = new SqlCommand(insertSQL, con);

    cmd.Parameters.AddWithValue("@CodCliente", codigoCliente);

    int excluidos = 0;

    try { con.Open(); excluidos = cmd.ExecuteNonQuery(); lblResultado.Text = excluidos.ToString() + " registro(s) excluido(s).";

    } catch (Exception err) { lblResultado.Text = "Erro excluindo um registro. "; lblResultado.Text += err.Message;

    } finally { con.Close(); }}

  • Acesso Desconectado

    Quando voc trabalha com acesso ao banco de dados desconectado, uma cpia dos dados armazenada na memria atravs de um DataSet. Voc conecta a base, recupera as informaes desejadas, preenche um DataSet e a conexo fechada imediatamente.

    Para preencher um DataSet voc dever utilizar o objeto DataAdapter, para isto vamos utilizar o mtodo Fill(), este mtodo ir inserir um DataTable no DataSet com os dados recuperados pela query. Veja o exemplo de cdigo abaixo:

    String connectionString = WebConfigurationManager.ConnectionStrings["Pubs"].ConnectionString;

    SqlConnection sqlConnection = new SqlConnection(connectionString);

    sqlCommand sqlCommand = new SqlCommand(SELECT * FROM Cliente ORDER BY Nome, sqlConnection);

    SqlDataAdapter adapter = new SqlDataAdapter(sqlCommand);DataSet dsLoja = new DataSet();

    Try {

    sqlConnection.Open();adapter.Fill(dsLoja, Clientes);

    } finally {sqlConnection.Close();

    }

    foreach (DataRow row in dsLoja.Tables["Cliente"].Rows){

    ListItem newItem = new ListItem();newItem.Text = row["nome"].ToString();newItem.Value = row["codcliente"].ToString();lstCliente.Items.Add(newItem);

    }

  • CAPITULO 13 DATA CONTROLS

    O ASP.NET possu uma srie de controles que possibilitam a insero automtica de valores nos web controls. Iremos aprender neste capitulo sobre os controles GridView.

    GridView

    O controle GridView um controle flexvel para exibir uma ou vrias linhas / colunas em uma tabela. Cada coluna de um registro uma coluna no grid.

    O GridView possu uma propriedade DataSource para guardar os objetos de dados que voc deseja exibir. Uma vez que voc j tenha informado tal propriedade, voc dever executar o mtodo DataBind() para que os dados sejam exibidos pelo controle. O controle GridView no possu as propriedades DataTextField e DataValueField (Os web controls comuns como ListBox, DropDownList possuem tais propriedades), o controle cria as colunas do grid automaticamente de acordo com o objeto de dados passado para a propriedade DataSource. Para desabilitar esta funcionalidade, voc dever informar o valor False para a propriedade do grid chamada AutoGenerateColumns.

    Veja abaixo a criao de um grid:

    Uma vez que voc j tenha adicionado o controle GridView em sua pgina web, voc poder recuperar as informaes da base de dados e utilizar o controle criado para exibio dos dados. Veja o cdigo de exemplo abaixo:

    protected void Page_Load(object sender, EventArgs e){

    string connectionString = WebConfigurationManager.ConnectionStrings["dbLoja"].ConnectionString;string selectSQL = "SELECT CodCliente, Nome, Email FROM Cliente";

    SqlConnection con = new SqlConnection(connectionString);SqlCommand cmd = new SqlCommand(selectSQL, con);

    SqlDataAdapter adapter = new SqlDataAdapter(cmd);DataSet ds = new DataSet();

    adapter.Fill(ds, "Products");

    GridView1.DataSource = ds;GridView1.DataBind();

    }

  • Selecionando um Item do GridView

    Para selecionar um item do GridView voc dever definir uma coluna do tipo em seu GridView, configurando as seguintes propriedades:

    ShowSelectedButton = (True/False) para exibio do boto de seleo, neste caso informe True;

    ButtonType = (Image/Button/Link) para definir o tipo de boto, podendo ser link, texto ou imagem;

    SelectText = Informe o texto a ser exibido caso o tipo de boto seja Link ou Button;

    SelectImageUrl = Informe o caminho relativo da imagem a ser exibida.

    Aps adicionar tal coluna voc poder recuperar as informaes da linha selecionada atravs do evento SelectedIndexChange, veja o cdigo abaixo:

    void GridView1_SelectedIndexChanged(object sender, EventArgs e) { if (GridView1.SelectedIndex > -1) { Response.Write(GridView1.SelectedRow.Cells[1].Text); }}

    Ordenando um GridView

    Para ordenar um GridView voc deve adicionar as colunas do grid manualmente, e ento configurar a propriedade SortExpression da coluna. Veja exemplo abaixo:

    Paginao

    O controle GridView possu uma eficiente forma de paginar os dados recuperados, para habilitar a paginao do seu grid, configure as seguintes propriedades:

    AllowPaging = (True/False) para habilitar ou desabilitar a paginao do seu grid, em nosso caso informe True;

    PageSite = (Int32) tamanho da sua pagina de dados (quantos registros sero exibidos na tela do usurio);

    Veja o exemplo abaixo:

    ...

  • Coluna Template

    At agora utilizamos colunas que recuperam dados informando uma propriedade referente ao nome do campo que desejamos utilizar para a coluna, porm a casos em que necessitamos colocar em uma mesma coluna algum outro campo ou at mesmo o prprio campo em objetos diferente dentro da coluna, para resolver este problema o GridView possui uma coluna do tipo template, veja abaixo como devemos criar e utilizar a mesma para recuperar e apresentar os dados ao usurio.

    Formatando Valores de Colunas do GridView

    Para formatar valores de uma coluna do grid, voc deve utilizar a propriedade chamada DataFormatString, onde a sintaxe de formatao deve iniciar com {0:[Formatao]} onde 0: indica o valor a ser formatado. Veja abaixo alguns exemplos de formataes:

    No exemplo acima o caractere C indica que uma formatao de valores monetrios, se o valor do campo for 5000.00 ser exibido para o usurio o valor R$ 5.000,00

    Exemplo de formatao de um campo de data, ser exibido para o usurio a data no formato DD/MM/YYYY

  • CAPITULO 14 FILES E STREAMS

    File System

    O .NET possui classes bsicas para recuperao de informaes de todo sistema de arquivos, como pastas e arquivos. Estas classes esto dentro do namespace System.IO.

    As classes Directory e File, contm mtodo estticos para recuperao de informaes de pastas e arquivos visveis no seu serivdor.

    As classes DirectoryInfo e FileInfo, possui mtodo de instncia e propriedades para recuperar as informaes de pastas e arquivos.

    A classe DriveInfo, possui mtodo estticos para recuperar informaes dos discos, parties e tambm um somatrio do espao disponvel em disco.

    Veja abaixo um exemplo de como listar os arquivos de uma determinada pasta:

    DirectoryInfo dirInfo = new DirectoryInfo(@C:\Windows);lstArquivos.DataSource = dirInfo.GetFiles();lstArquivos.DataMember = "Name";lstArquivos.DataBind();

    STREAMS

    Criao de Arquivos de Texto

    Com .NET ficou muito fcil a criao de arquivos de texto simples (flat) ou arquivos binrios. Diferente de um banco de dados, estes arquivos no possuem uma estrutura interna (por isto se chama flat).

    Voc poder escrever em um arquivo usando as classes StreamWriter e StremReader para criar ou ler um arquivo poderemos utilizar os mtodos CreateText(), ou OpenText() do classe File. Veja exemplo abaixo:

    StreamWriter streamWriter = File.CreateText(@C:\meuArquivo.txt);

    Quando chamamos o mtodo CreateText(), o arquivo de texto criado e o mtodo retorna um objeto do tipo StreamWriter. Neste ponto poderemo escrever os dados no arquivo de texto e assim que possvel fechar o mesmo.

    Usando o StreamWrite, poderemos chamar o mtodo WriteLine() para adicionarmos informaes no arquivo. Veja o exemplo abaixo:

    streamWriter.WriteLine("Este arquivo foi craido pelo ASP.NET");streamWriter.WriteLine(1000);

  • Quando voc finalizar o trabalho com o arquivo, voc dever fech-lo. Caso contrrio as informaes adicionadas no sero gravadas no disco e o arquivo ficar bloqueado. Para gravar as informaes no disco de tempos em tempos voc poder chamar o mtodo Flush(). Veja o exemplo abaixo:

    streamWriter.Flush();streamWriter.Close();

    Para ler informaes de um arquivo, voc dever utilizar a classe StreamReader, voc poder utilizar o mtodo ReadLine() para recuperar as prximas informaes do arquivo (linha a linha), este mtodo retorna null caso no exista mais informaes no arquivo. Veja o exemplo abaixo:

    StreamReader reader = File.OpenText(@"c:\meuArquivo.txt");string linha;

    do{ linha = reader.ReadLine(); if (linha != null) { Response.WriteLine(