Você está na página 1de 330

Curso Prtico Visual Studio.

NET 2005

Curso Prtico de
Visual Studio.NET 2005

Autor: Maurcio Jnior


www.mauriciojunior.org
www.aspneti.com
E-mail: mauricio@ascompras.com
mauricio@aspneti.com

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Nota sobre direitos autorais:


Este e-book de autoria de Mauricio Junior, sendo comercializado
diretamente atravs do site shop.linhadecodigo.com.br ou atravs do site
de Comrcio Eletrnico: www.ascompras.com.br / www.ascompras.com ,
mediante contato atravs do email: mauricio@ascompras.com ou atravs
do site www.aspneti.com.br e www.mauriciojunior.org , mediante ao e-mail
mauricio@aspneti.com.br,

diretamente

pelo

autor.

Nenhum

outro

usurio/email e/ou empresa est autorizada a comercializar este


ebook.
Ao adquirir este ebook voc tem o direito de l-lo na tela do seu
computador e de imprimir quantas cpias desejar. vetada a distribuio
deste arquivo, mediante cpia ou qualquer outro meio de reproduo, para
outras pessoas. Se voc recebeu este ebook atravs do e-mail ou via ftp de
algum site da Internet, ou atravs de um CD de Revista, saiba que voc
est com uma cpia pirata, ilegal, no autorizada, a qual constitui crime de
Violao de Direito Autoral, de acordo com a Lei 5988. Se for este o caso
entre em contato com o autor, atravs do e-mail mauricio@ascompras.com
, para regularizar esta cpia. Ao regularizar a sua cpia voc ir remunerar,
mediante uma pequena quantia, o trabalho do autor e incentivar que novos
trabalhos sejam disponibilizados. Se voc tiver sugestes sobre novos
cursos que gostaria de ver disponibilizados, entre em contato pelo e-mail:
mauricio@ascompras.com.
Visite periodicamente o site shop.linhadecodigo.com.br para ficar por dentro
das novidades:

Cursos de informtica.

Guias de Estudo para os Exames de Certificao da Microsoft.

Artigos e dicas sobre Certificaes da Microsoft.

Artigos sobre Carreira e Trabalho.

Dicas de livros e sites sobre diversos assuntos.

Simulados gratuitos, em portugus, para os exames da Microsoft.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

ESTE E-BOOK NO PODE SER


FORNECIDO EM UM CD OU DVD DE
NENHUMA REVISTA.

SE VOC OBTEVE UMA CPIA DESTE EBOOK ATRAVS DO E-MULE, KAZAA,


MORPHEUS OU OUTRO PROGRAMA DE
COMPARTILHAMENTO, SAIBA QUE
VOC EST COM UMA CPIA ILEGAL,
NO AUTORIZADA.

USAR UMA CPIA NO AUTORIZADA


CRIME DE VIOLAO DE DIREITOS
AUTORAIS, COM PENA PREVISTA DE
CADEIA.

VOC S PODE USAR ESTE E-BOOK SE


VOC COMPROU DIRETAMENTE COM O
AUTOR: MAURCIO JNIOR OU COMPROU
ATRAVS DO SITE
SHOP.LINHADECODIGO.COM.BR.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

PIRATARIA CRIME, COM PENA DE CADEIA. EU


AGRADEO PELA SUA HONESTIDADE. SE VOC COMPROU
UMA CPIA DESTE CURSO, DIRETAMENTE EM
SHOP.LINHADECODIGO.COM.BR OU DIRETAMENTE COM O
AUTOR WWW.MAURICIOJUNIOR.ORG OU
WWW.ASCOMPRAS.COM , NO DISTRIBUA CPIAS PARA
OUTRAS PESSOAS.

SE VOC BAIXOU UMA CPIA DESTE ARQUIVO USANDO


UM SOFTWARE TAL COMO O E-MULE OU O KAZAA, SAIBA
QUE VOC EST COM UMA CPIA PIRATA, ILEGAL. USAR
UMA CPIA ILEGAL CRIME DE VIOLAO DE DIREITOS
AUTORAIS.
ESTE ARQUIVO NO PODE SER DISTRIBUIDO GRAVADO
EM UM CD OU DVD DE REVISTA OU LIVRO. A NICA
MANEIRA DE OBTER ESTE ARQUIVO COMPRANDO
DIRETAMENTE COM O AUTOR OU ATRAVS DO SITE
SHOP.LINHADECODIGO.COM.BR

SE VOC RECEBEU UMA CPIA ILEGAL DESTE ARQUIVO,


NO ADQUIRIDA DIRETAMENTE PELOS MEIOS
DESCRITOS NO INCIO DA PGINA, ENTRE EM CONTATO
E REGULARIZE A SUA CPIA.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Palavras do autor: Maurcio Jnior


Tenho 24 anos e possuo trs livros publicados pela editora Cincia Moderna
no ano de 2005.
Procurei em todos os livros mostrar detalhadamente conceitos de orientao
a objetos, banco de dados como mysql e sql server e componentes da
prpria
Sou

MCP

ferramenta
Microsoft

WebApplication,

de
fao

desenvolvimento.
parte

da

comunidade

ASPNETI.COM (www.aspneti.com), onde publico todos os artigos, vdeos,


ebooks e livros.
Trabalho como consultor .NET na empresa STEFANINI IT Solution, fbrica
de software. Ministrei palestras e cursos sobre C#.NET, WebSerivces, Banco
de Dados SQL Server 2000, ASP 3.0, HTML Dinmico e lgica de
programao pela empresa POLITEC LTDA, fbrica de software e fui
premiado pelos mesmos.
Fui desenvolvendor ASP 3.0, Visual Basic 6.0 e Java J2EE pela POLITEC
durante quatro anos, comecei a desenvolver sistemas com 15 anos
estando at hoje no ramo por gostar de criar, desenvolver e
principalmente quando se diz respeito em ajudar e prover recursos
de tecnologia a todos.
Qualquer dvida, fale diretamente com o autor atravs do site
www.mauriciojunior.org ou pelo e-mail mauricio@ascompras.com.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Anotaes:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Anotaes:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

ndice
CRIANDO RSS XML PARA O SEU PRPRIO SITE .......................................... 11
CRIANDO MENU DINMICO COM C#.NET PASSO 1 ............................... 19
CRIANDO MENU DINMICO COM C#.NET PASSO 2 ............................... 29
Com diferenciao de usurio....................................................... 29
AJAX COM VISUAL STUDIO.NET 2005..................................................... 39
ADICIONANDO O AJAX NO VISUAL STUDIO.NET 2005 ........................... 40
GERANDO DOCUMENTO WORD COM VISUAL STUDIO.NET 2005 ...................... 52
AJAX COM C#.NET, .......................................................................... 59
USANDO TECNOLOGIA ASPNET (PARTE 1)................................................ 59
AJAX PARTE II ................................................................................. 65
(BUSCANDO USURIO NO BANCO DE DADOS) ............................................. 65
CRIANDO TREEVIEW COM VISUAL STUDIO.NET 2005 (PARTE 1) ..................... 83
CRIANDO TREEVIEW COM BANCO DE DADOS (PARTE 2) ................................ 90
DESENVOLVENDO COM ATRIBUTOS (JAVASCRIPT) E STRINGBUILDER ................. 97
GERANDO RELATRIO E EXPORTANDO PARA O EXCEL .................................. 105
COM VISUAL STUDIO.NET 2005.......................................................... 105
ORIENTAO A OBJETOS COM VISUAL STUDIO.NET (PARTE 2) ...................... 112
UPLOAD ENVIANDO IMAGEM PELA INTERNET ........................................ 122
CRIPTOGRAFANDO SENHAS OU STRINGS ................................................ 132
TECLAS DE ATALHO ......................................................................... 137
TRABALHANDO COM SESSION ............................................................. 147
PADRO DE CODIFICAO PARA .NET ................................................... 152
C#.NET...................................................................................... 152
INTRODUO ................................................................................ 153
PADRES DE DESENVOLVIMENTO C# ............................................... 153
ENDENTAO DE CDIGO .................................................................. 153
COMENTRIOS ............................................................................... 154
Comentrios de classes e mtodos.............................................. 155
DECLARAES ............................................................................... 156
Variveis privadas de classe....................................................... 156
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Variveis locais ........................................................................ 156
Namespace.............................................................................. 156
Interface ................................................................................. 156
Mtodos .................................................................................. 156
Enumeraes ........................................................................... 156
Eventos................................................................................... 157
Constantes .............................................................................. 157
Excees ................................................................................. 157
Propriedades pblicas ............................................................... 157
Windows Forms........................................................................ 158
Objeto de dados ....................................................................... 160
Variveis ................................................................................. 160
Web Forms .............................................................................. 161
CONSIDERAES ............................................................................ 162
COMUNICAO .NET E VB 6.0 PARTE I............................................... 163
VISUAL STUDIO.NET 2005 ............................................................... 163
CRIANDO HELP.............................................................................. 170
Visual Studio.Net 2003 usando NDOC.......................................... 170
Praticando ............................................................................... 171
CRIPTOGRAFIA DE STRING DE CONEXO NO WEB.CONFIG ............................ 183
VISUAL STUDIO.NET 2005 ............................................................... 183
GRAVANDO ERROS COM EXCEPTION - PARTE I.......................................... 191
USANDO ARQUIVO DE LOG. ................................................................ 191
GRAVANDO ERROS COM EXCEPTION NO ARQUIVO DE LOG - PARTE II.DOC ......... 197
VISUAL STUDIO.NET 2005 ............................................................... 197
GRIDVIEW PARTE I ......................................................................... 205
VISUAL STUDIO .NET 2005............................................................... 205
CDIGO BEHING ............................................................................ 211
GRIDVIEW PARTE II ........................................................................ 213
VISUAL STUDIO.NET 2005 ............................................................... 213
GRIDVIEW PARTE III ....................................................................... 224
VISUAL STUDIO .NET 2005............................................................... 224
Mtodo RowDeleting ................................................................. 229
IMPRIMIR COM VISUAL STUDIO.NET 2005 USANDO C#.NET. ...................... 233
LABEL SERVER CONTROL COM VISUAL STUDIO.NET 2005. .......................... 241
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


PRATICANDO ................................................................................. 242
MISTURANDO DADOS ....................................................................... 246
OBFUSCAR DADOS COM VISUAL STUDIO.NET 2005................................... 246
Pr-requisitos: ......................................................................... 246
Propriedades do form:............................................................... 247
PROGRAMANDO FORM2..................................................................... 251
TESTANDO APLICAO:..................................................................... 254
ORIENTAO A OBJETOS COM ............................................................. 256
VISUAL STUDIO.NET 2005 (O FAMOSO OO) PARTE 1.............................. 256
RESOURCES E INTERNACIONALIZAO USANDO VISUAL STUDIO.NET 2005 (PARTE I)
................................................................................................ 278
INDO PARA PRTICA ......................................................................... 279
RESOURCES E INTERNACIONALIZAO USANDO VISUAL STUDIO.NET 2005 (PARTE
II) ............................................................................................. 286
TRABALHANDO COM COOKIE USANDO VISUAL STUDIO.NET 2005 (PARTE I) ...... 295
TRABALHANDO COM COOKIE (PARTE II) ................................................. 305
REQUISITOS: ................................................................................ 305
ARMAZENANDO DADOS NO VIEWSTATE PARTE I ..................................... 315
INDO PARA A PRTICA .................................................................... 317
ARMAZENANDO DADOS NO VIEWSTATE PARTE II ...................................... 326
VISUAL STUDIO.NET 2005 ............................................................... 327
DIRETO PARA A PRTICA ................................................................... 327

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criando RSS Xml

Primeiramente, quero deixar claro que estou criando com a ferramenta


Visual Studio.NET 2005 Beta II da Microsoft.

Usarei o banco de dados

MYSQL.
O RSS um formato padronizado mundialmente, que funciona com
linguagem XML (Extensible Markup Language), e usado para compartilhar
contedo Web. Ele permite, por exemplo, que o administrador de um site
de notcias crie um arquivo XML com as ltimas manchetes publicadas, a
fim de compartilh-las mais rapidamente com seus leitores. Este arquivo
poder ser lido atravs de qualquer ferramenta que seja capaz de entender
o formato XML do RSS.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Crie um arquivo RSS.aspx clicando com o boto direito do mouse no projeto
e adicionando um novo item. Esse arquivo gerar automaticamente um XML
com os dados trazidos do banco de dados MYSQL.

Crie uma classe chamada BancoDados.cs criando dois mtodos dentro da


mesma. Uma chamada Conecta() e outra chamada Desconecta().
Segue abaixo a figura mostrando o primeiro mtodo comentado acima:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Segue

abaixo

figura

do

segundo

mtodo

criado

na

classe

BancoDados.cs.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Depois de criado os dois mtodos da classe irei programar dentro da classe


RSS.ASPX. Dentro da classe RSS, criei um mtodo protegido sem passar
parmetros e sem retornar parmetros. O mtodo chama geraRSS().
Segue a figura abaixo mostrando a classe:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Dentro dessa classe primeiramente devo importar as classes que usarei.


Veja os importes abaixo:

/// para gerar o xml


using System.Data.Odbc;
using System.Text;
using System.Xml;
Veja a assinatura do mtodo: protected void geraRss(), veja que void,
ou seja, sem retorno e sem parmetros de entrada como dito antes. Segue
todo cdigo desse mtodo a seguir.
protected void geraRss()
{
Response.Clear();
Response.ContentType = "text/xml";

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


XmlTextWriter objX = new
XmlTextWriter(Response.OutputStream, Encoding.UTF8);
objX.WriteStartDocument();
objX.WriteStartElement("rss");
objX.WriteAttributeString("version","2.0");
objX.WriteStartElement("channel");
objX.WriteElementString("title", "ARTIGOS - aspneti.com.br");
objX.WriteElementString("link","http://www.aspneti.com.br");
objX.WriteElementString("description","Artigos Publicados na
Comunidade ASPNETI.COM.BR");
objX.WriteElementString("copyright","(c) 2005,
ASPNETI.COM.BR, All rights reserved.");
objX.WriteElementString("ttl","5");
BancoDados sBanco = new BancoDados();
sBanco.Conecta();
string sql = "select ch_artigos, desc_artigos, dt_artigos,
tit_artigos from tb_artigos where status_artigos = 'A' order by dt_artigos
desc limit 30";
OdbcCommand objCommand = new OdbcCommand(sql,
sBanco.sConn);
OdbcDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
{
objX.WriteStartElement("item");
objX.WriteElementString("title",objReader.GetString(3));
objX.WriteElementString("description", "<img
src='http://www.aspneti.com.br/images/logo.gif'><br>Artigo Publicado na
comunidade ASPNETI.COM.BR <br><br>" + objReader.GetString(1));
objX.WriteElementString("link","http://www.aspneti.com.br/visualizar

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


/downloadArtigo.aspx?ch_artigos=" + objReader.GetInt64(0).ToString());
objX.WriteElementString("pubDate",
objReader.GetDateTime(2).ToString("dd/MM/yyyy"));
objX.WriteEndElement();
}
objReader.Close();
sBanco.Desconecta();
objX.WriteEndElement();
objX.WriteEndElement();
objX.WriteEndDocument();
objX.Flush();
objX.Close();
Response.End();
}

Explicando o mtodo:
Primeiramente crio um objeto XmlTextWriter e vou escrevendo dentro dele.
Crio vrios elementos (WriteElementString) e vou adicionando as tags. Logo
depois instancio a classe criada anteriormente de banco de dados e chamo
o mtodo para conectar.
Na linha abaixo, depois de conectar no banco de dados, crio uma varivel
sql fazendo um select nas tabelas do banco de dados. No use esse
mesmo select, porque estou fazendo para o meu banco de dados e tabelas,
voc dever ter o seu banco e suas tabelas. Criei o seu prprio select.
Logo depois, executo e fao um lao adicionando valores aos elementos,
depois fecho o objeto e o banco de dados e pronto, terminei de fazer o RSS.
Veja a figura abaixo mostrando executando o cdigo que foi criado acima.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Espero ter ajudado a todos.


Pessoal, foi criado um novo grupo chamado ASPNETI.com.br para ajudar a
todos os desenvolvedores do Brasil com Frum, Enqute, Artigos e muito
mais.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

MENU DINMICO COM C#.NET Passo 1

Estarei criando primeiramente um menu para ser utilizado por um sistema.


bem simples de desenvolver e usar. dividido em duas partes. Estarei
usando um componente free chamado skyMenu. Esse componente feito
apenas para ler um arquivo xml e mostrar em uma pgina .aspx. Estarei
explicando passo a passo de como fazer o menu dinmico para ser utilizado
em qualquer sistema.
Criei um projeto chamado Artigos. Adicionei uma pasta chamada menu e
dentro adicionei um arquivo chamado menu.ascx. Veja a figura 1-1 e 1-2.

Referncia: 1-1
Cliquei com o boto direito em cima do projeto, fui ao menu Add Folder,
logo aps Regular Folder, digitei o nome menu. Figura 1-2.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-2
Depois da pasta criada, cliquei com o boto direito em cima da pasta menu,
logo apo Add New Item..., adicionando um arquivo user control. No
esquea que um arquivo user control, tem a extenso .ascx. Veja na figura
1-3 o passo a passo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-3
A figura 1-4 mostra apenas user control, colocando o nome menu.ascx.

Referncia: 1-4
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Depois de criado, tenho que adicionar uma dll de referncia no projeto para
us-la. Clique com o boto direito em cima do projeto e clique Add
Reference, e escolha a dll. Veja na figura 1-5.

Referncia: 1-5
A figura de referncia 1-6 apenas mostra adicionando a dll no projeto para
ser usada mais tarde. Lembre-se que essa dll grtis e pode ser adicionada
no seu projeto apenas clicando no Add Reference...

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-6
Adicione dentro da pgina menu.ascx o cdigo abaixo:

<%@ Register TagPrefix="cc1" Namespace="skmMenu"


Assembly="skmMenu" %>
<cc1:menu id="Menu1" runat="server" ItemPadding="5" ItemSpacing="0"
zIndex="2000" Font-Size="8pt"
MenuFadeDelay="1" Cursor="Pointer" SubMenuCssClass="menu"
Layout="Horizontal" HighlightTopMenu="false">
<SelectedMenuItemStyle
CssClass="menuSelecionado"></SelectedMenuItemStyle>
</cc1:menu>

Estou utilizando o menu dentro da pgina menu.ascx. Note que esse menu
funciona em qualquer brownser, tanto faz se IE, Mozilla ou FireFox,
funciona do mesmo jeito e do mesmo layout. Esse cdigo acima foi inserido
na parte HTML da pgina.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Antes de inserir o code-behing da pgina menu.ascx, terei que criar um
arquivo xml, pode ser de qualquer nome, estarei colocando o nome do
mesmo como menu.xml. Adicione da mesma forma como adicionou o
menu.ascx o menu.xml.

Referncia: 1-7
Veja a figura de referncia 1-8, mostra o cdigo xml do arquivo do
menu.xml.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-9
Depois de criar o arquivo menu.xml definindo o menu, abri o arquivo
menu.ascx, cliquei duas vezes na pgina normalmente e adicionei o cdigo
abaixo:

protected void preencheMenu()


{
this.Menu1.DataSource =
"http://localhost/Artigos/menu/menu.xml";
this.Menu1.DataBind();
}

Criei apenas um mtodo protected chamado preencheMenu(), adicionando o


datasource do Menu1, indicando o xml criado anteriormente. Logo depois,
mando preencher o objeto com o DataBind().
Cliquei com o boto direito em cima do projeto e adicionei mais uma pgina
chamada default.aspx, por enquanto a mesma ter s um prefixo
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


incluindo o arquivo menu.ascx. Funciona como se fosse include no ASP
3.0.
Veja o cdigo abaixo junto com a explicao:
Primeiramente adicionei um Prefixo indicando o nome do arquivo ascx.
<%@ Register TagPrefix="Prefixo" TagName="menu"
src="menu/menu.ascx" %>

Depois de colocar o endereo correto do arquivo, uso o mesmo mais abaixo,


com o seguinte cdigo:
Prefixo: Nome do tagPrefix,
Id= pode ser qualquer nome
Runat = sempre deve ser o server
Fecha a tag.

<Prefixo:menu id="menu" runat="server"></Prefixo:menu>

A figura de referncia 1-10 mostra como o cdigo ficar na pgina


default.aspx.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-10
Coloquei como pgina inicial do projeto o arquivo default.aspx e iniciei a
aplicao. Veja na figura de referncia 1-11 o funcionamento do menu. O
interessante que o menu funciona em qualquer brownser sem problemas.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-11

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

CRIANDO MENU DINMICO COM C#.NET Passo 2


Com diferenciao de usurio.

Anteriormente foi criado um menu geral para todos visualizarem.


Mostrarei como criar menu dependendo do tipo do usurio que entrar na
aplicao, um a um. Primeiramente, estarei criando um arquivo chamado
tipoUsuario.aspx, l ter dois links. Um como administrador, e outro
apenas como usurio normal.
Veja a figura 2-1.

Referncia: 2-1
Veja a especificao da tela 2-1:

LinkButton
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Id = lnkUsuario
Text = Usurio Normal
LinkButton
Id = lnkAdmin
Text = Usurio Admin

Depois de criado os atributos da pgina 2-1, d um duplo clique no link


Usurio.
Estarei inserindo o cdigo abaixo:

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


{
Session["tipo"] = "Usuario";
Response.Redirect("default.aspx");
}

Veja que estou criando uma sesso chamada tipo e atribuindo um valor
chamado Usuario, sem acento ou caracter especial. Logo depois, estou
redirecionando para a pgina default.aspx.

Em seguida, d um duplo clique no link Usurio ADMIN e adicione o


seguinte cdigo:

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


{
Session["tipo"] = "Admin";
Response.Redirect("default.aspx");
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Veja que coloquei a minha varivel de sesso do tipo Admin e redirecionei


para a pgina default.aspx. Mais a frente ver o que significa essa sesso
tipo Admin e ou Usurio.
A figure 2-2 mostra como ficou o cdigo que foi adicionado acima.
Veja a figura de referncia 2-2.

Referncia: 2-2
Passando para o menu.xml, terei que alter-lo, colocando outras tags e
adicionando mais menus. O cdigo abaixo mostra como deve ficar o cdigo
xml.

<?xml version="1.0" encoding="utf-8" ?>


<menu>
<!-- Menu Principal para todos -->
<menuItem>
<text>Principal</text>
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<url></url>
<subMenu>
<menuItem>
<text>Pgina Principal</text>
<url>http://localhost/artigos/default.aspx</url>
</menuItem>
<menuItem>
<text>Sair</text>
<url>http://localhost/artigos/sair.aspx</url>
</menuItem>
</subMenu>
</menuItem>
<menuItem>
<text>Sistema</text>
<roles>Admin</roles>
<subMenu>
<menuItem>
<text>Cadastro</text>
<url>http://localhost/artigos/default.aspx</url>
</menuItem>
<menuItem>
<text>Editar</text>
<url>http://localhost/artigos/sair.aspx</url>
</menuItem>
</subMenu>
</menuItem>
<menuItem>
<text>Sistema</text>
<roles>Usuario</roles>
<subMenu>
<menuItem>
<text>Cadastro</text>
<url>http://localhost/artigos/default.aspx</url>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


</menuItem>
</subMenu>
</menuItem>
</menu>

O cdigo que est de laranja indica que foi mudado em relao ao xml do
artigo passo 1.
O cdigo da cor azul, indica a tag que deve ser acrescentada.
Veja o cdigo abaixo que est em azul.

<roles>Usuario</roles>

Esta tag <roles> indica o tipo de usurio ou nvel de usurio que pode
acessar / ver as pginas de acordo com o tipo de usurio. Foi adicionado o
nome Usuario e Admin.
A figura 2-3 mostra como ficou o arquivo menu.xml.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 2-3
Antes de testar o sistema e o menu, entre no arquivo menu/menu.ascx e
faa a seguinte alterao:

protected void preencheMenu()


{
Menu1.UserRoles.Add(Session["tipo"].ToString());
this.Menu1.DataSource="http://localhost:1060/WebSite2/menu/menu.xml"
;
this.Menu1.DataBind();
}

O mtodo criado preencheMenu(), foi mudado. Foi acrescentado a linha


em azul, significa que o tipo de usurio UserRoles ser o que est em
Session[tipo].
Bem simples de ser entendido e de fazer.
A figura 2-4 mostra como ficou o cdigo:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 2-4
Depois de tudo alterado, coloque o arquivo tipoUsuario.aspx como pgina
inicial do seu projeto. Figura 2-5.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 2-5
Inicie o sistema, logo aps clique no usurio normal.
Figura 2-6.

Referncia: 2-6
Veja o menu com o tipo usurio normal. Figura 2-7.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 2-7
Veja agora o menu criado depois que clica com o usurio Admin.
Figura 2-8.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 2-8
A diferena que um aparece o Editar e outro s aparece o CADASTRAR.
Lembrando que esse menu dinmico pode ser usado em qualquer brownser.
Espero que tenha gostado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Ajax com Visual Studio.NET 2005

Referncia: 1.1
A

cada

dia

Microsoft

tem

criado

ferramentas

para

melhorar

desenvolvimento de aplicativos e softwares que possam ajudar empresas


pblicas, privadas e governo.
Ajax significa Asynchronous Javascript And Xml, e uma tcnica
relativamente antiga, mas que at 2 anos e meio atrs no tinha um nome
prprio, era mais um truque na manga de programadores avanados.
Essa tcnica consiste em utilizar Javascript, XML e XmlHttpRequest de
forma a criar paginas que executem cdigo sem serem recarregadas, ou
seja, para utilizar um termo mais utilizado entre os programadores e
analistas ASPNET, sem realizar postbacks ou reload na pgina.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Uma outra forma de explicar isso, dizer que o Ajax permite um
comportamento assncrono de sua pgina, ou seja, seu programa vai
executar o cdigo no servidor sem que a pagina fique travada,
permitindo que o usurio enquanto isso continue utilizando-a (voc j deve
estar pensando o quanto isso seria til naquela sua pagina que executa
uma consulta ao banco de dados que leva 20 segundos).
Essa nova tecnologia pode ser usada praticamente em todas as plataformas
de programao para web, tais como PHP, Perl, ASP, JAVA e outros, vm
incorporando bibliotecas para suporte a Ajax, e no poderia ser diferente
com ASPNET. A implementao mais popular chamada de Ajax.Net, irei
explorar algumas possibilidades da tecnologia.

Adicionando o Ajax no Visual Studio.NET 2005

Antes de adicionar a referncia do AJAX no meu projeto, tenho que baix-la


no

site

http://ajax.schwarz-interactive.de

ou

no

site

http://www.aspneti.com.br para depois adicion-la. A referncia 1.2 mostra


perfeitamente como baixar a DLL.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.2

Pronto, baixei a DLL e coloquei dentro do micro. O mesmo foi copiado para
a minha rea de trabalho, ou seja, para o DESKTOP.
mostrado na referncia 1.3.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.3
Cliquei com o boto direito no projeto VS 2005, fui na opo ADD
REFERENCE... Depois disso, tenho que indicar onde se encontra a DLL. No
posso esquecer que deixei no DESKTOP do micro. Tente seguir passo a
passo para no ter erro.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.4
No prximo passo, indicar onde est a DLL para o projeto criado.
A referncia 1.5 mostra perfeitamente como indicar. um pouco diferente
do Visual Studio.NET 2003, existem as abas .NET, COM, PROJETCTS,
BROWSE e RECENT. Essa DLL, estarei que buscar pela ABA BROWSE,
indiquei a pasta DESKTOP e cliquei no arquivo AJAX.DLL.
No projeto adicionada automaticamente uma pasta chamada BIN.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.5
Prontinho, adicionei a referncia no meu projeto com sucesso. A nova
ferramenta da Microsoft quando adicionado um novo projeto, no vem com
o arquivo de configurao web.config. Tenho que clicar com o boto direito
e adicionar um novo item.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.6
Adicionei o arquivo de configurao WEB.CONFI, agora tenho que
adicionar uma linha para configurao do AJAX e para que funcione
corretamente.

<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx"
type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>

Esse cdigo de estar dentro da tag SYSTEM.WEB, no posso esquecer


disso, acredito que nem voc pode esquecer disso.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.7
Depois de adicionado as 4 linhas dentro do arquivo web.config o projeto j
est pronto para ser usado com a tecnologia AJAX. Irei adicionar uma
pgina / classe chamda Default.aspx dentro do projeto. S clicar com o
boto direito e ir a opo ADD NEW ITEM.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.8
Dentro dessa pgina, utilizarei os objetos da ferramenta como textbox,
boto e um div.
Segue todo o cdigo da pgina DEFAULT.ASPX abaixo para verificar os
nomes dos controles e javascript.

TextBox
Id = txtNome
Button
Id = cmdEnviar
Div
Id = divResultado

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Note que o button fiz como se fosse html, no usei o controle da
ferramenta. Dentro do button existe um atributo chamado ONCLICK que
chama uma funo JAVASCRIPT criada. A funo JAVASCRIPT pega o valor
digitado pelo usurio e passa para o mtodo criado na classe .aspx.cs.
O

retorno

da

funo

lanado

para

outra

funo

chamada

pegarValor_CallBack que apenas mostra no div criado. bem simples o


entendimento.

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>AJAX - ARTIGO</title>
<script>
function enviar(){
var form = document.forms[0];
var nome = form.txtNome.value;
_Default.primeiraAplicacaoAjax(nome,pegarValor_CallBack);
}
function pegarValor_CallBack(response){
var resultado = response.value;
document.all('divResultado').innerHTML = resultado;
}
</script>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtNome" runat=server></asp:TextBox>
<button id="cmdEnviar"
onclick="enviar();">Enviar</button>
</div>
<div id="divResultado"></div>
</form>
</body>
</html>

Depois da pgina HTML criada, tenho que fazer algumas coisas bsicas
dentro da classe.
A primeira coisa registrar o nome da classe que poder ser usada pelo
AJAX.
Em poucas linhas feito todo o processo. Veja abaixo:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


{
protected void Page_Load(object sender, EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(_Default));
}
[Ajax.AjaxMethod()]
public string primeiraAplicacaoAjax(string nome)
{
return "Nome: " + nome;
}
}

A parte que est em vermelho significa registrando a classe no ajax para


ser usada.
Todo mtodo criado que pode ser usado pelo ajax, deve comear com a
linha [Ajax.AjaxMethod()], apenas isso. Note que no HTML, na parte de
JAVASCRIPT chamo o nome da classe, ponto o nome do mtodo.
CLASSE.METODO(parametro).
Feito isso, s executar e verificar que a pgina vai a sua classe sem mesmo
dar o postback, ou seja, sem reload algum.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.9

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Gerando Documento Word com Visual Studio.NET 2005

bem simples e de fcil uso.


feito com a linguagem C#.NET 2.0.
Voc deve ter instalado em sua mquina os programas:
- Visual Studio.NET 2005 da Microsoft
- FrameWork 2.0
Criei um projeto no Visual Studio .NET 2005 chamado WebSite2.
Esse nova IDE de desenvolvimento da Microsoft est bem completa e legal
de se usar. O usurio desenvolvedor no precisa ter instalado na mquina o
aplicativo IIS,apenas para desenvolvimento.
A tela de referncia 1-1 mostra a IDE com o projeto criado.

Referncia: 1-1

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Cliquei com o boto direito do mouse em cima do projeto e adicionei um
novo item. Esse item ter o nome de word.aspx.
A tela de referncia 1-2 mostra como adicionar um novo item no projeto.

Referncia: 1-2
A figura de referncia 1-3 mostra apenas como escolher o tipo do item que
ser criado dentro do projeto. um tipo WebForm.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-3
Coloquei o nome do item como word.aspx e pronto. Est criada, o novo
objeto est criado. Lembre-se que criada automaticamente uma classe
com o mesmo nome. Veja a figura 1-4.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 1-4
Dentro dessa classe criada, criei um mtodo chamado geraWord().
Segue o cdigo abaixo do mtodo criado.

protected void geraWord()


{
Response.Clear();
Response.Buffer= true;
Response.ContentType ="application/msword";
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new
System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new
System.Web.UI.HtmlTextWriter(oStringWriter);
Response.Write(oStringWriter.ToString());
}

Analisando a assinatura do mtodo, podemos ver que um mtodo


protegido, que no retorna nada e no espera nada de parmetros. Bem
simples e direto.

protected void geraWord()

Depois de inserir o cdigo acima na classe, abrirei o meu HTML, inserindo


algumas palavras dentro. Qualquer palavra, apenas um teste para ver se
o que est em HTML ir para o word. Veja a figura 1-5.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-5.
No modo de design ficar da seguinte forma. Figura 1-6.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-6
Marquei o objeto como pgina inicial do projeto e executei-o.
O mesmo abrir o word com todas as palavras especficas do HTML
inseridas.
Veja a figura 1-7.
Antes, no esquea de colocar no load da classe a chamada para gerar o
seu word.

protected void Page_Load(object sender, EventArgs e)


{
geraWord();
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-7
Prontinho, o seu word est com todo o contedo que colocastes no html.
A minha dica a seguinte:
Faa tudo com os componentes, datagrid, datalist e depois apenas faa um
mtodo para gerar o word. Lgico que depois que estiver pronto toda a
execuo da sua regra de negcio.
Espero ter ajudado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Ajax com C#.NET,


Usando tecnologia ASPNET (parte 1).
* Instalando Ajax.Net
Antes de comear a utilizar a tecnologia Ajax.Net, primeiramente tenho que
instalar em meu projeto a DLL Ajax.Net. A mesma pode ser baixada no
endereo http://ajax.schwarz-interactive.de e composto alm da DLL um
timo tutorial em ingls. Clique em Download the latest DLL e
descompacte o arquivo em algum diretrio de sua mquina.
Abra o Visual Studio.NET 2003 e crie um projeto ASPNET com o nome que
quiser. necessrio adicionar essa referncia ao seu projeto. Siga os
passos abaixo: No Visual Studio, em Solution Explorer, clicar com o boto
direito do mouse em References e em Add Reference, na aba .NET, clique
em

Browser

selecione

arquivo

ajax.dll

no

diretrio

que

descompactado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

foi

Curso Prtico Visual Studio.NET 2005


Referncia: 1-1

Referncia: 1-2
Para configurar uma ultima coisa, deve ser inserido as linhas abaixo no
arquivo web.config e dentro do lao ou tag system.web.

<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx"
type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>

Estou apenas adicionando um comando que permite que o Ajax intercepte


chamadas ao servidor e atue quando necessrio. Pronto, agora j pode ser
criada uma pgina para teste.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

* Hello World
Para funcionar o Ajax devo fazer em duas partes: uma parte reside no
servidor, ou seja, no cdigo .cs, executa a parte compilada do cdigo, por
exemplo, validar um usurio, buscar dados no banco de dados, efetuar
algum calculo pesado, etc.; a outra parte fica no cliente, ou seja, javascript
e que mostra na tela com alertas e outros.
Na pagina WebForm1.aspx.cs insira o cdigo seguinte:

[Ajax.AjaxMethod()]
public string HelloAjax(string nome)
{
return "Ol de Ajax, " + nome + "!";
}

nica

coisa

diferente

nesse

mtodo

linha

de

cdigo

[Ajax.AjaxMethod()].
Dentro do mtodo padro que j vem na classe, o famoso Page_Load
devemos inserir o seguinte cdigo:

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


{
Ajax.Utility.RegisterTypeForAjax(typeof(WebForm1));
}

Esse comando acima adiciona automaticamente um bloco de cdigo


javascript em nossa pagina aspx, para que ela possa lidar com as chamadas
Ajax. O importante voc colocar o parmetro do typeof, ou seja, o nome
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


da classe que voc quer expor, nesse caso, o nome que voc deu a sua
pagina. Como estou mantendo o padro que est vindo no Visual
Studio.NET, ento a minha pagina WebForm1.aspx.
Certo a parte do cdigo fonte era isso, agora devo ir a parte do cdigo html.

Dentro do Form1, adicione uma caixa de texto, um boto e um div.

<form id="Form1" method="post" runat="server">


<asp:TextBox ID="txtNome" Runat="server"></asp:TextBox>
<button onclick="ExecutaHelloAjax()" type="button">Al
Ajax</button>
<br><br>
<div id="divResposta"></div>
</form>

Agora irei adicionar duas funes em javascript. recomendado colocar


todas as funes em javascript dentro do cdigo <head></head>. As
funes podem ser acrescentadas em qualquer parte do html, porm o
recomendado dentro do bloco <head>.

<script language="javascript">
function ExecutaHelloAjax(){
var nome = document.Form1.txtNome.value;
WebForm1.HelloAjax(nome, HelloAjax_CallBack);
}
function HelloAjax_CallBack(response){
document.all('divResposta').innerHTML = response.value;
}
</script>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Prontinho, agora inicie o projeto, digite o nome e clique no boto.

Referncia: 1-3
Clique no boto Alo Ajax e veja a rapidez que mostrado o cdigo ou
descrio que fizemos. Note tambm que a pagina no da reload, ou seja,
a pagina no recarregada.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-4
Espero que tenha ajudado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Ajax parte II
(buscando usurio no banco de dados)

Ol pessoal, essa a segunda parte falando sobre Ajax.


Para revisar, estarei mostrando o que foi montado anteriormente no projeto
AjaxTeste como a ferramenta Visual Studio.NET 2003.
Criei um banco de dados em MYSQL com uma tabela e com quatro campos.

Referncia: 1.1
Especificao da tabela:

Nome: TB_USUARIO
Campos:
ch_usuario

int

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


no_usuario

varchar(200)

pw_usuario

varchar(255)

email_usuario

varchar(255)

Logo depois criei uma classe chamada acessoBanco.cs com conexo com
o

banco

de

dados,

essa

classe

tem

dois

mtodos

Conecta()

Desconecta().
Foi criado a seguir uma classe Usuario.cs que possui um mtodo chamado
insereUsuario

passando

os

valores

nome,senha

email

como

parmetros do mtodo.
A classe de criptografia tambm foi criada para criptografar a senha na hora
que for inserida no banco de dados.
Explicarei como buscar os usurios do banco de dados automaticamente
depois de inseri-los. Criarei mais um mtodo dentro da classe Usuario.cs
que retornar o objeto DataSet.

/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[Ajax.AjaxMethod()]
public DataSet BuscaUsuario(string id)
{
sBanco.Conecta();
string sql = "select * from tb_usuario ";
if (id != "" && id != null)
{
sql += " where ch_usuario =" + id;
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


DataSet dtSet = new DataSet();
OdbcDataAdapter dtAdapter = new
OdbcDataAdapter(sql,sBanco.sConn);
dtAdapter.Fill(dtSet);
sBanco.Desconecta();
return dtSet;
}

Referncia: 1.2
No posso esquecer de referenciar o mtodo [Ajax.Method()] para que o
objeto possa encontrar o mtodo que estou utilizando. Na segunda linha
estou usando o mtodo para conectar com o banco de dados. Logo a seguir
monto o sql com o devido select na tabela do banco de dados. Instancio o
dataset para uso, preencho com o dataadapter e retorno o dataset. A classe
em si bem simples para o entendimento.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Passando para a classe WebForm1.aspx, abaixo segue o html.

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs"


AutoEventWireup="false" Inherits="AjaxTeste.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio
.NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
<script language="javascript">
function InsereUsuario(){
var nome = document.Form1.txtNome.value;
var senha = document.Form1.txtSenha.value;
var email = document.Form1.txtEmail.value;

Usuario.insereUsuario(nome,senha,email,InsereUsuario_CallBack);
}
function InsereUsuario_CallBack(response){
var retorno = response.value;
if (retorno){
document.all('divResposta').innerHTML =
"Inserido com sucesso !!";
}else{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


document.all('divResposta').innerHTML =
"Erro ao inserir usuario !!";
}
ExecutaBuscaUsuario();
limpaCampos();
}
function limpaCampos(){
var form = document.forms[0];
form.txtNome.value = "";
form.txtEmail.value = "";
form.txtSenha.value = "";
}
function ExecutaBuscaUsuario(){
var id = "";
Usuario.BuscaUsuario(id,BuscaUsuario_CallBack);
}
function BuscaUsuario_CallBack(response){
var usuario = response.value;
var div = document.all('divRespostaUsuario');
var ds = response.value;
//alert(ds);
if (ds != null && typeof(ds) == "object" &&
ds.Tables != null){
var result = '';
for (var i=0; i<ds.Tables[0].Rows.length;
i++){
var row = ds.Tables[0].Rows[i];
result += row.ch_usuario + " : " +
row.no_usuario + " - " + row.email_usuario + "<br>";
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

document.all('divRespostaUsuario').innerHTML = result;
}
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
Nome:
<asp:TextBox ID="txtNome"
Runat="server"></asp:TextBox><br>
Senha:
<asp:TextBox ID="txtSenha" TextMode="Password"
Runat="server"></asp:TextBox><br>
E-mail<asp:TextBox ID="txtEmail"
Runat="server"></asp:TextBox><br>
<button onclick="InsereUsuario()"
type="button">Insere Usurio</button>
<br>
<br>
<button onclick="ExecutaBuscaUsuario()"
type="button">Busca Usurio</button>
<br>
<br>
<div id="divResposta"></div>
<br>
<div id="divRespostaUsuario"></div>
</form>
</body>
</HTML>

A parte do cdigo que est em amarelo so os campos e o boto que chama


o mtodo que est na cor azul. A parte que est na cor vermelha traz e

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


executa a busca do usurio, esse div de vermelho mostra a parte de
usurio, ou seja, a tabela que vir do banco de dados.
Na posso esquecer de comentar o codebehing (cdigo de trs) da classe
webform1.aspx.cs.

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


{
Ajax.Utility.RegisterTypeForAjax(typeof(Usuario));
}

Apenas use o registro na entrada da classe para que o ajax reconhea todos
os mtodos da classe registrada da forma do cdigo acima.
Executei o cdigo iniciando o projeto.

Referncia: 1.3

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Digitando o nome do usurio, senha e e-mail, clique no boto inserir,
automaticamente e sem dar refresh na classe, ou seja, no da postback. Ir
aparecer todos os usurios automaticamente no segundo div criado
anteriormente.

Referncia: 1.3
Digitei o nome, senha e e-mail do usurio, cliquei no boto inserir e
automaticamente inseriu no banco de dados e mostrou todos os usurios
que j estavam na tabela de usurio.
Espero ter ajudado a todos.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Inserindo Usurio no Banco de Dados MYSQL Usando Tecnologia
AJAX

Demonstrarei como inserir um usurio no banco de dados sem realizar o


postback ou refresh na pgina. uma continuao do Ajax anterior.

Referncia: 1-1
O primeiro de tudo criar uma tabela no banco de dados MYSQL com o
nome tb_usuario e com os seguintes campos:
TB_USUARIO
ch_usuario

int(3) auto_increment

no_usuario

varchar(200)

pw_usuario

varchar(255)

email_usuario

varchar(255)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Depois da estrutura do banco de dados criada, irei inserir um mtodo
dentro

da

classe

Usuario.cs

chamado

insereUsuario(nome,senha,email).

/// <summary>
///
/// </summary>
/// <param name="nome"></param>
/// <param name="senha"></param>
/// <param name="email"></param>
/// <returns></returns>
[Ajax.AjaxMethod()]
public Boolean insereUsuario(string nome, string senha, string email)
{
try
{
sBanco.Conecta();
Criptografia sCript = new Criptografia();
string sql = "insert into tb_usuario
(no_usuario,pw_usuario,email_usuario) values ";
sql += " ('" + nome + "','" + sCript.encrypt(senha) + "','" +
email + "')";
OdbcCommand sqlc = new OdbcCommand(sql,sBanco.sConn);
sqlc.ExecuteNonQuery();
return true;
}
catch(Exception e)
{
throw new Exception(e.StackTrace);
}
finally
{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


sBanco.Desconecta();
}
}

Anterior, criei a classe acessoBanco.cs com os mtodos para abrir o banco


de dados e fechar o banco de dados, ou seja, a conexo com o banco de
dados. Estou usando a mesma classe e o mesmo mtodo, o mesmo est
com a cor vermelha acima. A string sql apenas pega os dados passados e
insere no banco de dados automaticamente abrindo a conexo e fechando
logo depois. Se for inserido corretamente o mtodo retornar true, se der
algum erro retornar false.

Referncia: 1-2
Dentro do mtodo insereUsuario, estou utilizando a classe Criptografia.cs e
o mtodo encrypt passando a string senha.
Abaixo segue todo o cdigo da classe Criptografia.cs:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

using System;
using System.Security.Cryptography;
namespace AjaxTeste
{
/// <summary>
/// Summary description for criptografia.
/// </summary>
public class Criptografia
{
//variaveis para criptografia
Byte[] IV = new byte[] {0x0012, 0x0034, 0x0056, 0x0078,
0x0090, 0x00AB, 0x00CD, 0x00EF, 0x0013, 0x0045, 0x0099, 0x00AA,
0x0012, 0x0056, 0x0012, 0x0009};
Byte[] key =
System.Text.Encoding.UTF8.GetBytes("aaaaaa32");
/// <summary>
/// metodo que encriptografa os dados de acordo com a minha
variavel
/// acima e os valores passos
/// ex.: encrypt("valor")
/// </summary>
/// <param name="strValor"></param>
/// <returns>string</returns>
public string encrypt(string strValor)
{
try
{
DESCryptoServiceProvider des = new
DESCryptoServiceProvider();
Byte[] inputByteArray =
System.Text.Encoding.UTF8.GetBytes(strValor);

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


System.IO.MemoryStream ms = new
System.IO.MemoryStream();
CryptoStream cs = new CryptoStream(ms,
des.CreateEncryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0,
inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch (System.Exception ex)
{
return ex.Message;
}
}
/// <summary>
/// metodo que descriptografa os dados de acordo com os
valores passos
/// e as variaveis acima
/// ex.: decrypt("valor_criptografado")
/// </summary>
/// <param name="strValor"></param>
/// <returns>string</returns>
public string decrypt(string strValor)
{
Byte[] inputByteArray = new byte[strValor.Length];
try
{
DESCryptoServiceProvider des = new
DESCryptoServiceProvider();
inputByteArray =
Convert.FromBase64String(strValor);
System.IO.MemoryStream ms = new
System.IO.MemoryStream();

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


CryptoStream cs = new CryptoStream(ms,
des.CreateDecryptor(key, IV), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0,
inputByteArray.Length);
cs.FlushFinalBlock();
System.Text.Encoding encoding =
System.Text.Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch (System.Exception ex)
{
return ex.Message;
}
}
}
}

Passando agora para a parte HTML, mais especificamente a pgina


WebForm1.aspx coloquei o cdigo seguinte:

<form id="Form1" method="post" runat="server">


Nome:

<asp:TextBox

ID="txtNome"

Runat="server"></asp:TextBox><br>
Senha:<asp:TextBox

ID="txtSenha"

TextMode=Password

Runat="server"></asp:TextBox><br>
E-mail<asp:TextBox

ID="txtEmail"

Runat="server"></asp:TextBox><br>
<button

onclick="InsereUsuario()"

type="button">Insere

Usurio</button>
<br><br>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<div id="divResposta"></div>
</form>

Veja que tenho os objetos na tela como nome, senha, email e um boto
Insere Usurio. Preste ateno que, o meu boto executa um script em
javascript chamado InsereUsuario(). Veja o cdigo abaixo:

<script language="javascript">
function InsereUsuario(){
var nome = document.Form1.txtNome.value;
var

senha

document.Form1.txtSenha.value;
var email = document.Form1.txtEmail.value;
Usuario.insereUsuario(nome,senha,email,InsereUsuario_CallB
ack);
}
function InsereUsuario_CallBack(response){
var retorno = response.value;
if (retorno){
document.all('divResposta').innerHTML

"Inserido com sucesso !!";


}else{
document.all('divResposta').innerHTML

"Erro ao inserir usuario !!";


}
}
</script>

Depois de todo cdigo inserido no HTML do webform1.aspx, s inicie o seu


projeto com o banco de dados iniciado.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-3
Digite valores nos campos e clicar no boto para inserir.
Veja que o mesmo ir inserir no banco de dados sem mesmo dar um
refresh na pgina ou falando diretamente com os desenvolvedores .net, um
postback.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-4

Referncia: 1-5

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Veja no banco de dados que o mesmo foi inserido com sucesso.

Referncia: 1-6
Espero que tenha ajudado a todos.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criando TreeView com Visual Studio.NET 2005 (parte 1)

Antes de tudo, explicarei qual o objetivo da criao do TreeView com Visual


Studio.NET 2005. Se algum no conhece o menu ou o nome Newsgroups
MSDN Brasil da Microsoft.
Para

ver

treeview

que

irei

criar

parecido

com

do

site

http://www.microsoft.com/brasil/msdn/newsgroups/default.mspx ou veja a
figura de referncia 1-1.

Referncia: 1-1

No Visual Studio.NET 2005 j possui o objeto treeview dentro da barra de


ferramentas

chamada

Toolbox.

Criei

primeiro

um

objeto

chamado

TreeView2005.aspx e arrastei o objeto para a pgina. Veja a figura 1-2.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-2
Na barra de ferramentas Toolbox, no item Navigation existe o objeto
TreeView pronto para ser arrastado e colocado dentro da pgina. Veja a
figura 1-3.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-3
Coloquei o nome ou o ID do objeto chamado treeView. Segue o cdigo da
pgina abaixo:

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="TreeView2005.aspx.cs" Inherits="TreeView2005" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>TreeView (passo 1)</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<asp:TreeView runat=server ID="treeView" ExpandDepth=0>
</asp:TreeView>
</div>
</form>
</body>
</html>

O que est de amarelo o componente que adicionei na pgina. Agora irei


criar apenas opes para ser mostradas na pgina. Na figura 1-4,
mostrado o que foi acrescentado para ser criado o primeiro menu.

Referncia: 1-4
Cliquei com o boto direto e deixando o TreeView2005.aspx para ser a
principal pgina do projeto. Executando o projeto apenas com esse cdigo
acrescentado, veja as figuras 1-5 e 1-6 o que j foi criado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-5
Expandindo o treeView, aparecer as opes daquele treeView.

Referncia: 1-6

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Acrescentei mais uma tagLib dentro do objeto para aparece mais uma
opo dentro do TreeView. Veja a figura 1-7.

Referncia: 1-7
Executei novamente a pagina do projeto e veja o resultado na figura 1-8
abaixo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-8
Espero ter ajudado.
O treeview ser desenvolvido com banco de dados SQL Server.
Aguardo e vers mais e mais.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criando TreeView com Banco de Dados (parte 2)

Essa segunda parte do TreeView foi feito com banco de dados SQL SERVER.
O Visual Studio.NET 2005 bem fcil e simples de criar um menu TreeView
com valores do banco de dados. O nome do banco de dados Northwind,
ou seja, todo SQL SERVER instalado no servidor ou mquina j vem com
esse banco padro.
No irei fazer OO (orientado a objetos), o cdigo ser todo dentro da pgina
treeView.aspx. A parte 3, refatorarei o cdigo colocando da forma OO.
O primeiro de tudo, devo colocar o cdigo do objeto na parte de html, ou
apenas arrastar da toolbox o objeto treeview.
Segue o cdigo:

<asp:TreeView
ID="Tree"
runat="server"
ExpandDepth=0
OnSelectedNodeChanged="SelectedNodeChanged">
</asp:TreeView>

A ilustrao do objeto acima est nas prximas figuras 1.1 e 1.2.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.1

Referncia: 1.2

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

No comeo do cdigo, criei uma constante chamada conectionString


armazenando o a linha de conexo do banco de dados.

///classe de importao para usar banco de dados


using System.Data.SqlClient;
///constante com varivel de conexo com o banco de dados
const string connectionString =
"Server=localhost;Integrated Security=True;Database=Northwind";

Veja a figura de referncia 1.3.

Referncia: 1.3
O prximo cdigo abaixo ser chamado no load da pgina. Criei um mtodo
protegido e que no volta nada. Segue o mesmo.

///mtodo que popula o treeview


protected void Popula()
{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


DataSet dst = TreeViewData();
foreach (DataRow masterRow in dst.Tables["Categories"].Rows)
{
TreeNode masterNode =
new TreeNode((string)masterRow["CategoryName"]);
Tree.Nodes.Add(masterNode);
foreach (DataRow childRow in
masterRow.GetChildRows("Children"))
{
TreeNode childNode = new TreeNode();
childNode.Text = childRow["ProductName"].ToString();
childNode.Value = childRow["ProductID"].ToString();
masterNode.ChildNodes.Add(childNode);
}
}
}

A linha de cdigo que est pintada de amarela outro mtodo que criei que
retorna um objeto dataset. Veja o mesmo abaixo:

protected DataSet TreeViewData()


{
SqlConnection con = new SqlConnection(connectionString);
SqlDataAdapter dadCats = new SqlDataAdapter("SELECT * FROM
Categories", con);
SqlDataAdapter dadProducts = new SqlDataAdapter("SELECT *
FROM Products", con);
DataSet dst = new DataSet();
dadCats.Fill(dst, "Categories");
dadProducts.Fill(dst, "Products");
dst.Relations.Add("Children",

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


dst.Tables["Categories"].Columns["CategoryID"],
dst.Tables["Products"].Columns["CategoryID"]);
return dst;
}

O cdigo acima treeViewData() retorna para quem chamou um objeto


dataset. Dentro do bloco do cdigo, conecto no banco de dados, crio um
select que uma instruo PSSQL, passando a minha varivel con criada
anteriormente. O mesmo retorna um dataAdapter com o nome dadCats
que da tabela de categoria. Na linha abaixo, crio um outro select para
retornar outro objeto dataAdapter.
Seguindo o cdigo, preencho os objetos dataSet, relaciono os valores e
retorno o dataSet.
O mtodo Popula(), tenho que fazer dois foreach para relacionar o pai
com seus filhos e mostrar no treeView. Primeiro monto um node (n), com
um nome da categoria e depois monto os filhos do mesmo n. Depois
apenas preencho o treeView com o text e o value adicionando-os.
A linha abaixo explica preenchendo o text e o value.

TreeNode childNode = new TreeNode();


childNode.Text = childRow["ProductName"].ToString();
childNode.Value = childRow["ProductID"].ToString();
masterNode.ChildNodes.Add(childNode);

A linha em amarelo acima mostra adicionando os ns no treeView.


Veja o mesmo em funcionamento. No esquea de iniciar o SQL SERVER.
Set como a pgina de inicializao e clique F5. A figura 1.4 mostra a
ilustrao do funcionamento.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.4
Ainda no acabou e voltando ao cdigo do treeView, na parte de html veja
que existe uma tag diferente.

OnSelectedNodeChanged="SelectedNodeChanged">

Esse SelectedNodeChanged um mtodo que criei para quando o usurio


clicar em um link ou linha do treeView, o mesmo ser redirecionado
passando alguns valores. Veja o cdigo abaixo:

protected void SelectedNodeChanged(object sender, EventArgs e)


{
Response.Redirect("rss.aspx?no=" +
this.Tree.SelectedValue.ToString() + "&de=" +
this.Tree.SelectedNode.Text);
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


}

Desde j agradeo a todos e espero ter ajudado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Desenvolvendo com Atributos (Javascript) e StringBuilder

Ol pessoal, estou disposto a mostrar todos os segredos de desenvolver


usando javascript e atributos.
bem simples e de fcil entendimento, por isso peo a voc que pelo
menos perca uns 3 minutos lendo-o. Garanto que sair com mais
conhecimento e eu mesmo aprendi muito com ele. Antes sabia que existia,
porm no sabia como desenvolver direito e da melhor forma.
Antes de comear definitivamente, irei escrever uma frase cujo voc ter
que decifra-la, no prximo, darei a resposta da frase. Enquanto isso tente
decifra-la e boa sorte. Segue a frase:
Ftqftp rvf bqsfoeb dpn fttf bsujhp.
A tela de referncia 1.1 mostra a primeira pgina criada.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 1.1
Estou desenvolvendo com Visual Studio.NET 2005 Beta II. Coloquei na
classe alguns objetos de tela como boto, label e textbox. Segue abaixo a
especificao toda da tela:

TextBox
Id = txtNome
Label
Id = lblNome
ForeColor = Red
Button
Id = cmdBotao
Text = Boto Confirmao
Button
Id = cmdAlert
Text = Gerar Alerta

A classe s possui esses objetos de tela, segue o cdigo da pgina:

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<title>String Builder</title>
</head>
<body>
<form id="form1" runat="server">
<div>
&nbsp;Nome:
<asp:TextBox ID="txtNome"
runat="server"></asp:TextBox>
<asp:Button ID="cmdBotao" runat="server"
OnClick="cmdBotao_Click" Text="Boto Confirmao" />
<br />
<br />
<asp:Label ID="lblNome" runat="server"
ForeColor="Red"></asp:Label>
<br />
<br />
<asp:Button ID="cmdAlert" runat="server"
OnClick="cmdAlert_Click" Text="Gerar Alerta" /></div>
</form>
</body>
</html>

Cliquei duas vezes em cima da pgina e no mtodo load adicionei um


atributo para o boto no onclick, bem simples esse cdigo e serve para
adicionar uma mensagem de confirmao para o boto cmdBotao criado
anteriormente.

protected void Page_Load(object sender, EventArgs e)


{
cmdBotao.Attributes.Add("onclick","javascript:if
(confirm('Deseja realmente inserir os valores ?')==false) return

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


false;");
}

Veja que existe um if (confirm( dentro do Add, logo depois existe uma
mensagem que ser exibida quando clicar no boto. Continuando com o if,
no final pergunta se igual a false (==false), se for retorna false; dessa
forma a pgina no da submit ou postback.
Cliquei duas vezes no boto cmdBotao e adicionei um cdigo dentro.

protected void cmdBotao_Click(object sender, EventArgs e)


{
lblNome.Text = "Inserido com sucesso, " +
txtNome.Text;
}

O cdigo adicionado apenas mostra uma mensagem no label inserido com


sucesso passando o nome que foi digitado no cdigo textbox. Mostrarei o
funcionamento da pgina neste momento.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.2
Clicando com no boto confirmao o mesmo mostrar uma mensagem
para o usurio. A figura 1.3 mostra o funcionamento depois do clique do
boto.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.3
Preenchi o campo e clicando no boto confirmar, depois na opo ok, o
mesmo mostra no cdigo inserido com sucesso e o nome que foi digitado no
textbox. A figura 1.4 mostra isso perfeitamente.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.4
Passando para o prximo boto chamado cmdAlert, estou apenas exibindo
um alert javascript depois que clica no mesmo. Estarei trabalhando com
string builder, cujo a melhor forma de trabalhar quando vai mexer com
string de grande quantidade.
Veja o cdigo do boto:

protected void cmdAlert_Click(object sender, EventArgs e)


{
StringBuilder str = new StringBuilder();
str.Append("<script>");
str.Append("alert('Gerando alerta na tela !!');");
str.Append("</script>");
Page.RegisterStartupScript("alert", str.ToString());
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Antes de tudo voc deve importar ou usar o System.Text; ou seja,


referencia no comeo da classe o Text para usar depois o stringbuilder.
A referncia 1.5 mostra como funciona o boto criado.

Referncia: 1.5

Pessoal, espero que tenha aprendido alguma coisa.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Gerando Relatrio e Exportando para o Excel


Com Visual Studio.Net 2005

Nesta parte, mostro como gerar relatrio e exportar para o Excel. Espero
que possa estar aprendendo muito. de simples entendimento e rpida
produtividade para gerar o mesmo. O mesmo ser desenvolvimento em
C#.NET.

Referncia: 1-1
Na tela de referncia 1-1 mostro apenas a tela que gerei com o visual
studio.net 2005. Cliquei com o boto direito no produto e adicionei um novo
item ADD NEW ITEM... O nome do novo item gerandoExcel.aspx.
O cdigo abaixo mostra o que tem na parte HTML da pgina:
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="gerandoExcel.aspx.cs" Inherits="gerandoExcel" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Gerar Excel</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblExcel" runat=server></asp:Label>
</div>
</form>
</body>
</html>

A nica coisa que acrescentei na pgina foi um label com o nome lblExcel.
O mesmo est com a cor alaranjada para que note o que foi acrescentado.
A figura 1-2 mostra a parte de design da tela.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-2
Dentro da classe, j dentro do cdigo C#.NET, criarei um mtodo para
gerar em arquivo excel. Ser chamada depois do objeto label for
preenchido. Note que bem simples, dessa forma poderei fazer qualquer
relatrio ser mostrado no excel.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-3
Segue o cdigo:

protected void Page_Load(object sender, EventArgs e)


{
lblExcel.Text = "Teste <br> teste <br> gerando excel <br>";
geraExcel();
}

protected void geraExcel()


{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


this.EnableViewState = false;
System.IO.StringWriter oStringWriter = new
System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new
System.Web.UI.HtmlTextWriter(oStringWriter);
Response.Write(oStringWriter.ToString());
}

Explicando o cdigo:
Na entrada da pgina, preencho o label com um texto aleatrio como
"Teste <br> teste <br> gerando excel <br>"; . A linha debaixo,
chamo o mtodo criado para gerar o arquivo excel. O mtodo chama-se
geraExcel() que j faz o mesmo virar um arquivo excel. O segredo do
mtodo a linha Response.ContentType = "application/vnd.msexcel"; . Note que a assinatura do mtodo , protected protegido e void,
no retorna valor algum.
No esquea de colocar a pgina como pgina inicial do projeto e inicie o
projeto.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-4
Clique em OPEN e espere alguns segundos.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 1-5
A figura 1-5 mostra resultado acima do cdigo criado. Pode ser feito
qualquer relatrio com qualquer objeto na tela, depois s chamar o
mtodo para gerar o relatrio.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Orientao a Objetos com Visual Studio.NET (parte 2)

Ol pessoal, como foi dito anteriormente, essa segunda parte ser bem
simples. Mostra que depois do cadastro do usurio enviado um e-mail
automaticamente. Antes de tudo irei criar duas novas classes para o
projeto.

Uma

se

chamar

ConstantesSistema.cs

outra

EnviaEmail.cs.
A primeira classe armazena as variveis do sistema para enviar e-mail.
A segunda classe ter dois mtodos para enviar e-mail automaticamente.
A classe EnviaEmail.cs estende da classe ConstantesSistema.cs, ou
seja, todas as variveis e mtodos criados na classe estendida poder ser
acessado e usado na classe de e-mail.

Referncia: 1.1
As duas classes circuladas na figura 1.1 mostra que sero usadas.
Seguindo com o sistema, a figura 1.2 mostrada apenas as variveis.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.2
Segue a descrio abaixo para facilitar a copia.
public class ConstantesSistema
{
public string MAIL_DE = "EMAIL QUE IR ENVIAR";
public string PW_DE = "SENHA DO EMAIL";
public string SMTP_MAIL = "SMTP DO SERVIDOR DE EMAIL";
public string SMTP_AUT = "1";
}

Explicando as variveis:
MAIL_DE o e-mail que estar no campo e-mail de. Imagine mandando
um e-mail, sempre o seu e-mail estar no campo e-mail de.
PW_DE a senha do e-mail que enviar.
SMTP_MAIL o smtp do servidor de e-mail que tens, por exemplo,
smtp.terra.com.br.
SMTP_AUT o tipo da autenticao, ou seja, numero 1.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

bem simples a classe ConstantesSistema.cs.

Referncia: 1.3
Continuando e indo para a classe de E-mail, irei inserir dois mtodos, um
para autenticar e outro para enviar o e-mail propriamente dito.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.4
A figura 1.4 mostra o mtodo que envia e-mail. Analisando a assinatura do
mtodo, veja que no retorna valor algum e espera quatro parmetros de
entrada. Segue o cdigo.

/// <summary>
/// Envia e-mail automaticamente
/// </summary>
/// <param name="usuarioNome"></param>
/// <param name="usuarioEmail"></param>
/// <param name="descricaoEmail"></param>
/// <param name="tituloEmail"></param>
public void enviarEmail(string usuarioNome, string
usuarioEmail,
string descricaoEmail, string tituloEmail)
{
try
{
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


MailMessage mail = new MailMessage();
mail.From = MAIL_DE;
mail.To = usuarioEmail;
mail.Subject = tituloEmail;
mail.BodyFormat = MailFormat.Html;
mail.Body = descricaoEmail;
getAutenticacao(mail);
SmtpMail.SmtpServer = SMTP_MAIL;
SmtpMail.Send(mail);
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}

Explicando os parmetros de entrada:


usuarioNome: o nome do usurio que receber o e-mail.
usuarioEmail: o e-mail do usurio que ir receber.
descricaoEmail: a descrio do e-mail que ir ao corpo da mensagem.
tituloEmail: o titulo que ir no e-mail enviado.
Isso tudo, usarei dentro do bloco try do mtodo. O mtodo catch pega o
erro

que

ocorrer.

Primeiro

instancio

mtodo

da

classe

using

System.Web.Mail; chamado MailMessager. O nome da varivel chama-se


mail. Portanto uso-a para atribuir os parmetros e valores em seus
respectivos campos.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

try
{
MailMessage mail = new MailMessage();
mail.From = MAIL_DE;
mail.To = usuarioEmail;
mail.Subject = tituloEmail;
mail.BodyFormat = MailFormat.Html;
mail.Body = descricaoEmail;
getAutenticacao(mail);
SmtpMail.SmtpServer = SMTP_MAIL;
SmtpMail.Send(mail);
}

No esquea de que uso as variveis da classe constantesSistema. Isso


economiza muita coisa, se o e-mail ou senha ou smtp mudar, apenas ser
mudado em um local, ou seja, na classe ConstantesSistema.cs.
A linha que est em amarelo um outro mtodo que serve para autenticar
a mensagem que ser enviada.

private void getAutenticacao(MailMessage mail)


{
mail.Fields["http://schemas.microsoft.com/cdo/configuration
/smtpauthenticate"] = SMTP_AUT;
mail.Fields["http://schemas.microsoft.com/cdo/configuration

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


/sendusername"] = MAIL_DE;
mail.Fields["http://schemas.microsoft.com/cdo/configuration
/sendpassword"] = PW_DE;
}

Veja que estou usando as variveis da outra classe.


Pronto, agora j foram criadas as duas classes que precisava para enviar email automaticamente.

Referncia: 1.5
V para a classe Default.aspx e depois que o cadastro foi feito, dentro do
bloco if instancie o mtodo da classe de e-mail passando os parmetros.
Veja como ficar o mesmo abaixo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

protected void cmbGravar_Click(object sender, EventArgs e)


{
usuarioDAO dao = new usuarioDAO();
usuarioDTO dto = new usuarioDTO();
setValores(dto);
if (dao.insereUsuarioDAO(dto))
{
EnviaEmail sEmail = new EnviaEmail();
sEmail.enviarEmail(txtNome.Text, txtEmail.Text,
"Obrigado pelo cadastro", "Cadastro realizado com sucesso ");
Response.Redirect("resultadoFinal.aspx");
}
else
{
Response.Redirect("resultadoFinalErro.asp");
}
}

As linhas que esto de amarelo o que foi acrescentado.


Executando o cdigo, irei fazer um cadastro e ver se o e-mail chegou.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.6

Referncia: 1.7

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Veja que chegou o e-mail em minha caixa postal.

Referncia: 1.8
Espero que tenham gostado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

UPLOAD Enviando imagem pela Internet

Como enviar imagens pela internet. Chamamos isso de upload, quando


baixo um arquivo da internet chamamos isso de download. Todo cdigo
bem simples para quem j sabe como funciona e um pouco mais complexo
para quem no sabe ou nunca viu a funcionalidade. No comeo do cdigo,
antes de tudo usarei uma tag html com o famoso runat=server. No ache
estranho, porm preciso ter acesso a objetos de tela dentro do code behing.

Referncia: 1-1
O cdigo abaixo mostra o que falei logo acima.

Tag HTML.
<INPUT
HEIGHT:

class="caixa"
22px"

id="txtImagem"

type="file"

style="WIDTH:

size="30"

296px;

name="txtImagem"

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


runat="server">

O objeto chama-se txtImagem. Posso pegar esse objeto dentro do cdigo


c#.net porque o mesmo est com uma tag que uso, runat.

<%@

Page

language="c#"

Codebehind="upload.aspx.cs"

AutoEventWireup="false" Inherits="Artigos.upload" %>


<!DOCTYPE

HTML

PUBLIC

"-//W3C//DTD

HTML

4.0

Transitional//EN" >
<HTML>
<HEAD>
<title>upload</title>
<meta name="GENERATOR" Content="Microsoft Visual
Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta

name="vs_defaultClientScript"

content="JavaScript">
<meta

name="vs_targetSchema"

content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:Button

id="cmdEnviar"

style="Z-INDEX:

101; LEFT: 136px; POSITION: absolute; TOP: 120px"


runat="server"

Text="Enviar

Arquivo"></asp:Button>
<TABLE

style="Z-INDEX:

102;

LEFT:

24px;

POSITION: absolute; TOP: 72px">


<TR>
<TD>Imagem:</TD>
<TD><INPUT

class="caixa"

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


id="txtImagem" style="WIDTH: 296px; HEIGHT: 22px" type="file"
size="30"
name="txtImagem"
runat="server">
</TD>
</TR>
</TABLE>
<asp:Label id="lblUpload" style="Z-INDEX: 103;
LEFT: 88px; POSITION: absolute; TOP: 24px" runat="server"
Font-Bold="True"

Font-Names="Arial

Narrow" Font-Size="Large">UPLOAD DE ARQUIVOS</asp:Label>


</form>
</body>
</HTML>

Todo meu FORM est destacado da cor azul. Preste bem ateno nas tags
que uso para enviar arquivo. Na parte de design do Visual Studio.NET 2003
mostrado na figura 1-2.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-2
Agora mostrarei o cdigo C#.NET enviando uma imagem pela internet.

Referncia: 1-3
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

/// <summary>
/// Metodo que pega a extensao dos arquivos
/// </summary>
private void pegaArquivo()
{
//pegando o arquivo
sArquivo = txtImagem.PostedFile.FileName;
nomeArqFinal =
System.IO.Path.GetFileName(sArquivo);
sExtensao =
System.IO.Path.GetExtension(sArquivo);
}

/// <summary>
/// Metodo que clica no botao enviar para fazer upload
do arquivo
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cmdEnviar_Click(object sender,
System.EventArgs e)
{
pegaArquivo();
//fazendo upload do arquivo

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


if (sExtensao.ToUpper() == ".GIF" ||
sExtensao.ToUpper() == ".JPG" || sExtensao.ToUpper() == ".PNG")
{
//setando caminho para o arquivo no
servidor
//estou setando para \imagens
this.txtImagem.PostedFile.SaveAs(Server.MapPath(".") +
@"\images\" + nomeArqFinal);
Response.Write("<script>alert('Arquivo
enviado com sucesso !!');</script>");
Response.Write("<script>location.href='upload.aspx';</scrip
t>");
}
else
{
Response.Write("<script>alert('A extenso
do arquivo deve ser .GIF ou .JPG ou .PNG');</script>");
Response.Write("<script>location.href='upload.aspx';</scrip
t>");
}
}

Explicando o cdigo C#.NET:


Clique duas vezes no boto enviar. Primeiramente, coloquei um mtodo
antes

de

enviar

arquivo

escolhido.

Esse

mtodo

chama-se

pegaArquivo() e faz apenas uma coisa; pega o nome do arquivo e a


extenso.
Na prxima linha do mtodo cmdEnviar_Click verifico qual a extenso do
arquivo que o usurio escolheu.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

if (sExtensao.ToUpper() == ".GIF" || sExtensao.ToUpper() ==


".JPG" || sExtensao.ToUpper() == ".PNG")

Se a extenso do arquivo escolhido foi algumas dessas descritas na


condio, o arquivo ser enviado automaticamente para a internet e dentro
da pasta images.
O cdigo que envia o arquivo para o servidor :

this.txtImagem.PostedFile.SaveAs(Server.MapPath(".") +
@"\images\" + nomeArqFinal);

Dica:
No posso esquecer de criar a pasta images dentro do servidor ou do
prprio computador. No posso deixar de falar que, deve ter permisso
para fazer upload dentro do servidor da internet, ou seja, deve ter
permisso de leitura e escrita para a pasta images.
Continuando com a anlise do cdigo, se no for as extenses que verifiquei
o sistema mostra uma mensagem falando de quais extenses podem ser
escolhidas para enviar o arquivo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-4

Referncia: 1-5

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


No clique do boto Enviar Arquivo, a mesma figura ser transferida para a
pasta images.

Referncia: 1-6

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1-7
Veja que a figura est dentro da pasta images.
Aqui chego ao final, espero que possa ter ajudado a voc.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criptografando Senhas ou Strings

A segurana hoje em dia tem ficado sempre em primeiro plano quando


dizemos ou falamos em software. No importa qual o tipo de software ou
sistema, o que vale a segurana de dados, informaes, usurios e
senhas.
A segurana do cdigo uma prioridade alm do prprio sistema, mas
iremos apenas trabalhar agora com criptografia de dados. No importa o
tipo de dado para criptografar, basta apenas criptografar e garantir a
segurana de informaes. Muitas pessoas criam uma nova maneira para
criptografar

dados

com

chaves

pblicas,

privadas

tudo

mais.

Demonstrarei como criptografar dados usando uma classe do prprio


framework .NET.
Colocarei duas formas:
SHA1

(Secure Hash Algorithm

Algoritmo

de

Resumo

Seguro).

Este algoritmo recebe como entrada um documento qualquer sob a forma


digital

com

um

tamanho

de

at

elevado

64

bits

(18.446.744.073.709.551.616 bits) ou 2.305.843.009.213.693.952 "Bytes"


ou caracteres, e gera como sada de string de 160 bits ou 20 Bytes. Ele
um pouco mais lento que o MD5, mas em compensao mais difcil de ser
quebrado.
MD5 (Message Digest) - Ele produz uma sada de 128 bits ou 16 Bytes.
Ele mais rpido que o SHA-1.
HashPasswordForStoringInConfigFile(senha, formato da
senha)
Senha: string passada ou descrio qualquer que o usurio
digitou
Formato da Senha: tipo do formato, voc pode escolher dois
tipos de formato (MD5, SHA1)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criei uma pgina no meu projeto com o nome testeCript.aspx, voc pode
criar a sua prpria pgina conforme quiser.

Na pgina, coloquei apenas alguns objetos. Segue a descrio dos mesmos.

TextBox
Id = txtSenha
Text = em branco
Button
Id = cmdCript
Text = Criptografar

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Label (so dois)
Id = lblSHA1
Text = em branco
Id = lblMD5
Text = em branco

Cliquei duas vezes no boto cmdCript e coloquei as seguintes linhas de


cdigo:

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


{
lblSHA1.Text = "SHA1 " + criptografarSHA1(txtSenha.Text) ;
lblMD5.Text = "MD5 " + criptografarMD5(txtSenha.Text) ;
}

Veja que ainda no foram criados os mtodos criptografarSHA1 nem


criptografarMD5.
Segue os mtodos.

private string criptografarSHA1(string cript)


{
return
FormsAuthentication.HashPasswordForStoringInConfigFile(cript,"SHA1");
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

private string criptografarMD5(string cript)


{
return
FormsAuthentication.HashPasswordForStoringInConfigFile(cript,"MD5");
}

Cliquei F5 e depois digitei no campo textbox aspneti.com.br.

Veja o resultado da string criptografada.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Teclas de Atalho

Ol pessoal, mostro como montar e criar teclas de atalho utilizando a IDE


Visual Studio.NET 2003. Falo que no diferente o modo de criar atalhos
com a IDE Visual Studio.NET 2005 lanada pela Microsoft.
A Microsoft criou a IDE para desenvolvimento, porm no foi criado teclas
de atalho para melhorar a velocidade de desenvolvimento e produtividade
para quem est trabalhando em uma fbrica de software ou uma empresa
pequena de desenvolvimento. O importante foi que essa uma grande
jogada para um novo critrio prtica. A ferramenta foi deixada aberta para
criao de teclas de atalho conforme o gosto do desenvolvedor. Isso
significa que podemos criar vrias teclas de atalho, ficando assim mais
rpido o desenvolvimento.

Comeando com a prtica, irei abrir a IDE Visual Studio.NET e criar uma
classe chamada atalho.cs. Segue em seguida a figura ilustrativa.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Depois da classe criada, acesse o menu TOOLS, depois OPTIONS, como na


figura ilustrativa a seguir:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Clicado na opo do MENU / OPTIONS, ir aparecer uma tela secundria


onde posso definir uma tecla de atalho para qualquer tipo de comando. A
tela simples de entendimento.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Como na figura ilustrativa anterior, clique na opo ENVIRONMENT e na
sub opo KEYBOARD. Essa opo para o teclado, ou seja, fazer ou criar
uma tecla de atalho.

Na parte vermelha da figura onde poderei escolher o comando para criar


uma tecla de atalho, com isso quando for teclado essa mesma tecla, o
comando ser executado automaticamente, sem precisar usar o mouse e
menu. Para quem digita muito, isso incrivelmente timo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Percorrendo os comandos, existe um de grande importncia na hora de


criar um projeto legal. O comando que escolhi, cria um novo projeto. Pode
ver que deixei selecionado clicando uma vez com o mouse. Veja a segunda
parte circulada e note que no campo PRESS SHORTCUT KEY(S) existe os
valores CTRL+SHIFT+ALT+P. Isso aconteceu porque cliquei dentro do
campo e digitei essas teclas. bem simples mesmo, s clicar no campo e
digitar as teclas de atalho que o mesmo coloca automaticamente dentro do
campo. Faa voc agora a sua tecla de atalho.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Depois de criado a tecla, ainda no terminou, clique no boto ASSIGN para


efetivar mesmo essa tecla de atalho. Note o resultado na prxima figura.

Veja que o boto remover foi habilitado automaticamente. Clique no boto


OK e teste no projeto a tecla de atalho que foi colocada.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Note que realmente funciona como se esperava. Clique nas teclas e j


apareceu automaticamente o comando que gostaria. Seguindo ainda com
teclas de atalho, agora irei criar uma tecla de atalho para gerar
automaticamente get e set de variveis criadas dentro da classe. o
mesmo conceito, porm irei escolher outra opo de comando.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Na imagem acima mostra as minhas duas variveis criadas dentro da classe


atalho.cs. Vou seguir os mesmos passos para criar o atalho. Para quem
no sabe qual o comando para gerar get e set automaticamente, o nome
ENCAPSULATEFIELD.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Veja que a tecla de atalho que escolhi foi: CTRL + ALT + E . Clique no
boto ASSIGN para atribuir, logo em seguida, clique OK.
O prximo passo clicar em cima de sua varivel depois a tecla de atalho.

A tela acima ir aparecer. Clique no boto OK e pronto. Est feito.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Trabalhando com Session

Como trabalhar com Session dentro de uma aplicao do projeto com a


ferramenta Visual Studio.NET. Antes de tudo estarei falando de alguns
conceitos de session em uma aplicao web.
A session muito usada em aplicao para controlar acesso, tipo ou
qualquer outra coisa. A session criada por browser, isto , cada vez que
abro o Internet Explorer ou Firefox ou Opera aberta uma session para
controle. Cada vez que se inicia uma aplicao usando .net aberta uma
sesso para o usurio.
A ilustrao abaixo mostra como funciona.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Uma sesso ou session em uma aplicao determinada ou controlada por


um tempo. Se o usurio ficar no browser parado por mais de alguns
minutos e depois for acessar novamente; a aplicao ir pedir novamente
que o usurio autentique no browser ou na aplicao. O tempo padro de
uma sesso dentro de um browser de 20 minutos, mas pode ser alterado
de acordo com a necessidade.
A CLR (common language runtime) gerencia a memria usando garbage
collection para a session. A garbage collection traa em um servidor
periodicamente atravs de referncias entre objetos. Quando no tempo de
execuo, (runtime), for encontrado um objeto longo que est sendo usado,
ele tira o objeto ou joga fora e recupera a memria.
Voltando com ilustrao, depois que o usurio sair da aplicao ou do
browser o mesmo passar dentro de uma tag chamada Session_End. Isso
usando .NET. Veja a figura abaixo de ilustrao.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Segue uma tabela de eventos de sessions e applications.

Tipo

Explicao

Application_Start

A primeira visita do usurio em uma aplicao.

Application_End

Na sada da aplicao pelo usurio


No inicio o pedido de cada request do servidor.

Application_BeginRequest

Um request do servidor acontece toda vez que


o browser de algum inicia ou entra na
aplicao.

Application_EndRequest
Session_Start
Session_End

Fim do pedido de requet, ou seja, quando o


usurio sai da aplicao.
Toda vez que um usurio entra na aplicao.
Quando a sesso terminada definida pela
aplicao ou o usurio sai da aplicao.

Demonstrarei como criar em uma aplicao .NET como mostrar quantos


usurios esto online no site. Para esse tipo de verificao usado session.
Teste no seu site e veja o quanto fcil trabalhar com session. Segue o
cdigo:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Visual Basic .NET


Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' Save the number of clicks in Session state.
Session("Clicks") = Session("Clicks") + 1
' Display the number of clicks.
Response.Write("Number of clicks: " & Session("Clicks"))
End Sub
Visual C#
// From Global.asax.cs
protected void Session_Start(Object sender, EventArgs e)
{
// Initialize Clicks Session state variable.
Session["Clicks"] = 0;
}
// From StateNEvents.asax.cs
private void Button1_Click(object sender, System.EventArgs e)
{
// Increment click count.
Session["Clicks"] = (int)Session["Clicks"] + 1;
// Display the number of clicks.
Response.Write("Number of clicks: " + Session["Clicks"] + "<br>");
}

Trabalhar com sessions bem simples e fcil. Geralmente uma session


usada ou ativada depois que usurio entra no sistema logando-se com
usurio e senha. Com isso, enquanto a sesso estiver ativa o mesmo
continua na aplicao, se ela expirar o mesmo ser redirecionado para uma
pgina onde possa fazer o login.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Para criar uma session em C# (Sharp), basta digitar as seguintes linhas:
Session["Clicks"] = "valor";
Pode ser criado qualquer tipo de sesso que precisar em uma aplicao.
Para ler uma session basta fazer da seguinte forma:
Response.Write(Session["Clicks"].ToString());

Espero ter ajudado.


Livros publicados do autor:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Padro de Codificao para .NET


C#.NET

Estou disposto a colocar para vocs um documento de padro para


codificao de sistemas e cdigos. Dessa forma, se todos programarem de
uma mesma forma dentro de uma empresa ou sistema, o cdigo ser
entendido por qualquer pessoa no futuro que for executar alguma
modificao no sistema. Esse tipo de documento timo para comear um
sistema por uma equipe, tudo se torna mais fcil e gil programar.
Espero que possa ajudar a todos como me ajudou depois que fiz.
Outros artigos podero ser encontrados no site abaixo:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

INTRODUO
Este documento tem como objetivo elaborar uma padronizao para o
desenvolvimento em C#, considerando os seguintes tpicos:

Padronizao de nomenclatura usada na programao de mtodos,

objetos, variveis e constantes. Alm disso, trata como dever ser feita a
documentao dentro do cdigo.

PADRES DE DESENVOLVIMENTO C#
Endentao de cdigo
Alguns trechos de cdigo podem ficar muito extensos e voc dever encarar
o dilema de quebrar a linha.

Quebrar

linha

Quebrar

linha

aps

uma

aps

vrgula;

um

operador;

Alinhar a nova linha no inicio da expresso no mesmo nvel da linha


anterior.
Exemplo:
longMethodCall(expr1, expr2, expr3,
expr4, expr5);
e
var

(c

f)

4 * z;

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Outro fator importante a utilizao de espaos em branco para
endentao. No use espaos em branco para endentao, use tabulao.
Motivos: Facilidade de incrementar e decrementar blocos de cdigo atravs
de atalhos de teclas do editor de cdigo.

Comentrios
Utilizar as trs barras /// para comentrios de classes e mtodos. O
motivo utilizar a funcionalidade do Visual Studio .NET de transformar
comentrios em documentao de cdigo. Entretanto, para comentrios que
no necessitam ser publicados, seguem algumas sugestes:
O comentrio importante para voc ou outra pessoa ser orientada sobre a
manuteno de um cdigo fonte, tenha ateno forma de destacar o
comentrio. Por exemplo, comentrios com mais de uma linha poderiam ser
assim:
/**

Line

Line

Line

**/
Para comentrios de uma linha somente, o comentrio deve ser uma
espcie de marcador de loops ou no deve ser aplicado. A questo que
como exposto em linhas anteriores, os comentrios devem chamar a
ateno visando facilitar e direcionar a manuteno. Somente justifica-se
um comentrio de uma linha quando voc necessita marcar dentro de um
bloco de cdigo o incio de um nvel de endentao ou loop. Exemplo:
//Verifica

se

somente

uma

string

foi

entrada

if(args.Length==1)
Console.WriteLine(args[0]);
else
{
ArgumentOutOfRangeException
ex

new

ex;

ArgumentOutOfRangeException("Utilize

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


somente

uma

string");
throw(ex);

}
Outra boa aplicao para comentrios de uma linha a explicao de uma
declarao. Por exemplo:
int

levelStatus;

//

nvel

do

status

int sizeStatus; // tamanho do status

Comentrios de classes e mtodos


Toda classe e mtodo devem ser documentados. O padro utilizado segue
abaixo:
/// <summary>
///

Retorna

DirectoryEntry

representando

unidade

organizacional.
/// </summary>
/// <param name="coopCentral">Cooperativa Central.</param>
/// <param name="cooperativa">Cooperativa desejada</param>
/// <returns>
/// Resulado da busca no AD.
/// </returns>
///

<exception

cref="ActiveDirectoryManager.ActiveDirectoryManagerException">
/// Se no for encontrada a unidade organizacional.
/// </exception>
/// <remarks>
/// Criado por: <nome>
/// Alterado por: <nome>
/// </remarks>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Declaraes
Variveis privadas de classe
Utilizar a definio CamelCase (a primeira letra do identificador minscula
e a primeira letra de cada identificador subseqente concatenado
maiscula).

Exemplo:
String firstName;
Variveis locais
Utilizar a definio CamelCase.

Namespace
Utiliza-se o nome da empresa seguido pelo nome do projeto, camada de
negocio e o modulo que est sendo desenvolvido.
Exemplo:
Bancoob.NomeProjeto.CamadaNegocio.AccessControl
Interface
O nome de interface deve ser PascalCase (a primeira letra do identificador
maiscula e a primeira letra de cada identificador subseqente concatenado
maiscula), e comear com o prefixo I, para indicar que o tipo uma
interface.
Exemplo:
IServiceProvider

Mtodos
Utilizar a definio PascalCase.
Enumeraes
Utilizar a definio PascalCase.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Eventos
Utilizar a definio PascalCase para o nome do evento.
Utilizar o sufixo EventHandler para o nome do delegate associado ao
evento. Especificar dois parmetros sender e e. O parmetro sender
representa o objeto que disparou o evento e deve ser sempre do tipo
Object, mesmo sendo possvel utilizar um tipo especifico. O estado
associado com o evento encapsulado em uma instancia de um evento de
classe chamado e.
Exemplos:
public delegate void MouseEventHandler (object sender,
MouseEventArgs e)
public event MouseEventHandler Click;

Constantes
Nomes de constantes devero ser todos maisculos com as palavras
separadas por um underscore.
Exemplo:
A2A_MAX
Excees
O nome de uma classe de exceo deve utilizar a definio PascalCase, e
finalizar com a expresso Exception, para indicar que o tipo uma exceo.
Exemplo:
ServiceProviderException

Propriedades pblicas
Utilizar a definio PascalCase para o nome de propriedades.
Exemplo:
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


public int PrinterStatus
{
}

Windows Forms
Abaixo temos a lista de componentes e os prefixos:
Componente

Prefixo

Exemplo

Assembly

asm

Button

btn

btnExit

Char

ch

chxxx

CheckBox

chk

chkReadOnly

CheckedListBox

clb

clbOptions

ColorDialog

cld

cldText

ComboBox

cbo

cboEnglish

Container

ctr

ContextMenu

cmn

cmnOpen

CrystalReportViewer

rpt

rptSales

DataColumn

dcol

DataGrid

grd

DataGridDateTimePickerCol

dgdtpc

grdQueryResult

umn
DataGridTableStyle

dgts

DataGridTextBoxColumn

dgtbc

DataReader

dreader

DataRow

drow

DataTable

dtable

Dialog

dialog

DialogResult

dr

DomainUpDown

upd

updPages

ErrorProvider

err

errOpen

Exception

ex

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


FontDialog

ftd

ftdText

Form

frm

frmEntry

GroupBox

grp

grpActions

HashTable

htbl

HelpProvider

hlp

hlpOptions

HScrollBar

hsb

hsbMove

ImageList

ils

ilsAllIcons

Label

lbl

lblHelpMessage

LinkLabel

lnk

lnkEmail

ListBox

lst

lstPolicyCodes

ListView

lvw

lvwHeadings

MarshallByRefObject

rmt

Mainmenu

mm

MDI-Frame

frame

MDI-Sheet

sheet

Menu

mnu

MenuItem

mi

MonthCalendar

mcl

mclPeriod

NotifyIcon

nti

ntiOpen

NumericUpDown

nud

nudPieces

OpenFileDialog

ofd

ofdImage

PageSetup Dialog

psd

psdReport

Panel

pnl

pnlGroup

PictureBox

pic

picIcon

PrintDialog

ptd

ptdText

PrintDocument

prn

prnText

PrintPreviewControl

ppc

ppcText

PrintPreviewDialog

ppd

ppdText

ProgressBar

prg

prgLoadFile

RadioButton

rad

radType

RichTextBox

rtf

rtfReport

SaveFileDialog

sfd

sfdImage

SDI-Form

form

mnuFileOpen

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Splitter

Spt

sptDivision

StatusBar

sta

staDateTime

TabControl

tbc

tbcOptions

TextBox

txt

txtLastName

Timer

tmr

tmrAlarm

ToolBar

tlb

tlbActions

ToolTip

tip

tipIcons

TrackBar

trb

trbIndex

TreeView

tre

treOrganization

UserControl

usr

VScrollBar

vsb

WindowsPrincipal

wpl

vsbMove

Objeto de dados
Abaixo temos alguns componentes de comunicao de dados:
Componente

Prefixo

Exemplo

DataSet

dts

dtsProducts

DataView

dtv

dtvConsult

OleDbCommand

ocm

ocmConsult

OleDbConnection

ocn

ocnClients

OleDbDataAdapter oda

odaClients

SqlCommand

scm

scmConsult

SqlConnection

scn

scnClients

SqlDataAdapter

sda

sdaClients

Variveis
Veja a lista abaixo de tipos e prefixos:
Tipo

Prefixo

String, string

str

Boolean

bln

Byte

byt

Int16, int32

int

Long

lng

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Single

sgn

Double

dbl

Currency

cur

Date Time

dtm

Variant

var

Array

ary

User-defined

typ

type
Enum

enu

Collection

col

Object

Web Forms
Veja a lista abaixo de tipos e prefixos:
Tipo

Prefixo

AdRotator

adrtr

Button

btn

Calendar

cldr

CheckBox

cbx

CheckBoxList

cbxl

CompareValidator

cvdr

CrystalReportViewer

crvwr

DataGrid

dgrd

DataList

dlst

DropDownList

ddl

HyperLink

hlnk

Image

img

ImageButton

ibtn

Label

lbl

LinkButton

lbtn

ListBox

lbx

Literal

ltrl

Panel

pnl

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


PlaceHolder

phdr

RadioButton

rbtn

RadioButtonList

rbtnl

RangeValidator

rvdr

RegularExpressionValidator rev
Repeater

rptr

RequiredFieldValidator

rfv

Table

tbl

TextBox

tbx

ValidationSummary

vsmy

Xml

xml

Consideraes
Ao declarar variveis, procure seguir as consideraes abaixo.
Ao invs de:
int a, b;
usar:
int

a;

//

Valor

de

entrada

int b; // Valor de entrada 2

Sempre inicializar suas variveis no local aonde so declaradas.


int a = 1; Valor de entrada 1

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Comunicao .NET e VB 6.0 Parte I


Visual Studio.NET 2005

Irei mostrar nesse primeiro passo como usar cdigos C#.NET dentro de
uma aplicao VB 6.0. Criei um projeto do tipo Class Library com uma
classe chamada CDados.cs.
Antes de comear segue a famosa frase criptografada e pronta para ser
decifrada. O que conseguir decifr-la primeiro ganhar um prmio.
Nf nboeb f-nbjm dpn p ujuvmp tnbmmxjmmf
Bom, para comear irei mostrar como criar um projeto class library com o
visual studio.net 2005. Cliquei no link da pgina inicial chamado Create
Project e logo depois escolhi a opo Class Library. (Referncia 1.1 e 1.2
Class Libary)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.1 Class Library

Cliquei no link que est em vermelho.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.2 Class Library.


Na aba templates existem vrias opes, porm a escolhida e j falado
antes a Class Library. Essa opo apenas gera uma dll no final da
compilao podendo ser referenciada e usada em outros projetos.
Em seguida criei uma classe chamada CDados.cs. (Referncia 1.3 Class
Library)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.3 Class Library

Dentro da classe, acrescentei um mtodo apenas para retornar um valor


qualquer, do tipo string. (Referncia 1.4 Class Library)

[ComVisible(true)]
public string TesteDados(string entrada)
{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


return "TesteDados >> " + entrada;
}
Referncia: 1.4 Class Library.
Explicao:
bem simples e fcil o desenvolvimento. Nada diferente do que sou
acostumado, a no ser por uma linha descrita antes da classe.

[ComVisible(true)]
Referncia: 1.5 Class Library.
Analisando a assinatura do mtodo, o mesmo recebe uma string de entrada
e retorna um valor do tipo string.
Antes da classe tenho que definir em duas linhas algumas coisas que podem
me ajudar quando for usar com o outro aplicativo de outra linguagem como
visual basic 6.0. (Referncia 1.6 Class Library)

[Guid("49C0145D-ABC4-4c0e-8640-CDA03BE8D733")]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class CDados
Referncia: 1.6 Class Library
Explicao:
Primeiramente defini um GUID para a classe, dessa forma no terei
problemas quando registr-la no usando o comando REGASM. Mas esse
assunto ser falado e explicado mais a frente. Para que o VB 6.0 consiga
enxergar o que foi descrito dentro da classe, como mtodo e funo, so
necessrios colocar a linha de cdigo. (Referncia 1.7 Class Library).

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

[ClassInterface(ClassInterfaceType.AutoDual)]
Referncia: 1.7 Class Library
Lembre-se que se eu for usar algum tipo de dados e valores para retornar,
necessrio referenciar uma dll chamada ADODB, clicando com o boto
direito em cima da pasta referncia.
Note como ficou toda classe depois de construda. (Referncia 1.8 Class
Library)

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Runtime.InteropServices;
using System.Text;
using ADODB;
namespace SicoobDados2005
{
[Guid("49C0145D-ABC4-4c0e-8640-CDA03BE8D733")]
[ClassInterface(ClassInterfaceType.AutoDual)]
public class CDados
{

[ComVisible(true)]
public string TesteDados(string entrada)
{
return "TesteDados >> " + entrada;

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


}
}
}
Referncia: 1.8 Class Library
Bom, fico por aqui.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criando HELP

Visual Studio.Net 2003 usando NDOC.

Com essa parte, espero ajudar todos os desenvolvedores que trabalha em


equipe, fabrica de software ou mesmo distribui o cdigo fonte. Hoje em dia,
desenvolvo vrios tipos de frameworks para empresas particulares e
pblicas que desejam uma documentao ou mesmo um help para ajudar a
outros desenvolvedores quando ocorrer alguma alterao. Essa idia de
documentar os cdigos que desenvolvo um costume muito bom para que
depois de muito tempo o mesmo cdigo possa estar sendo usado ou
alterado por outra pessoa que nem mesmo participou do projeto no comeo
do desenvolvimento.
Existe uma ferramenta que pode estar gerenciando e criando documentao
de todo o projeto, ou seja, do cdigo fonte que foi desenvolvido. O Visual
Studio.Net 2003 possui tambm uma ferramenta que gera pginas html.
uma boa ferramenta, mas no mostrarei como us-la, essa outra
ferramenta NDOC pode gerar paginas html ou mesmo .chm que a
extenso de um help.
Para

utilizar

instalar

NDOC,

basta

acessar

site

http://ndoc.sourceforge.net/
http://sourceforge.net/project/showfiles.php?group_id=36057

ou
para

fazer

download e instalar o mesmo em sua mquina.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Depois de instalado, agora ser com o desenvolvedor ou programador. Todo


o cdigo que for digitado dentro da ferramenta Visual Studio.Net 2003
timo se for documentado; uma boa prtica de programao.

Praticando

Antes de tudo, criei um projeto web no VS 2003 chamado NDoc2003. Criei


uma classe chamada NDoc.cs para mostrar a todos como funciona a
ferramenta

NDOC.

Desenvolvi

apenas

um

mtodo

chamado

VerificarStatus() que retorna uma String qualquer. A figura mostra como


ficou o cdigo digitado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Apenas um for de zero a dez armazenando em uma varivel string para


retornar depois. Perceba que a classe est comentada dentro das tags
summary. O cdigo da classe bem simples e de fcil entendimento.

using System;
namespace NDoc2003
{
/// <summary>
/// Classe NDOC para mostrar ao usurio as boas prticas para ///
documentar
/// o cdigo desenvolvido.
/// </summary>
public class NDoc
{
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


private String VerificarStatus()
{
string retorno = null;
for (int i=0; i > 10; i++)
{
retorno += "meu retorno " + i;
}
return retorno;
}
}
}

Esse comentrio dentro da tag summary muito importante para gerar


depois o help com index e pesquisa. Depois de criado o mtodo dentro da
classe NDoc.cs, fui ao incio mtodo ou uma linha antes, clique trs vezes as
barras ( /// ), que, a ferramenta Visual Studio.Net 2003 j coloca as tags
necessrias para ser comentadas.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Pronto, o mtodo foi comentado descrevendo o que ele faz, quais os


mtodos esto referenciando e o tipo de retorno. Depois de comentado,
cliquei com o boto direito em cima do projeto e fui para a opo
propriedades para definir um xml de comentrio.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Logo depois, ir aparecer uma outra tela menor chamada Property Pages,
existe uma pasta do lado direito com o nome Configuration Properties e
por

ltimo,

dentro

dessa

opo

existe

um

campo

chamado

XML

Documentation File, coloquei um nome na frente do campo para sair um


arquivo xml depois do projeto compilado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

O nome que escolhi foi NDocXML.xml para a sada dos comentrios feitos
dentro do projeto. bastante interessante isso no Visual Studio.NET; todas
as sadas do projeto, estar dentro deste xml. Depois clique em APLICAR e
depois em OK.
Compilei o projeto e o mesmo gerou um arquivo de acordo com o que foi
solicitado na tela de properties. Segue o mesmo dentro da pasta do projeto.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Depois de instalado, o NDOC fica em seu menu iniciar. V at a opo 1.1 e


clique para o programa comear a executar.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cliquei no programa e abriu uma tela com algumas funcionalidades. bem


simples utilizar o mesmo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Existe o boto ADD do lado direito, no comeo do programa. Clicando, o


mesmo abrir uma outra tela menor que serve para indicar ou referenciar a
dll do projeto.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Esse campo Assembly, para referenciar a DLL do projeto. Clique no boto


com trs pontinhos do lado direito ( ... ) e indique a DLL do seu projeto
depois de compilada. Depois disso clique apenas no Ok.
Depois de tudo isso estamos quase l, para gerar o nosso help. simples
depois fazer uma configurao para saber se queremos um help ou apenas
documentos web ou help e documentos web. Ainda na tela principal do
NDOC, necessrio mudar alguns parmetros ou configuraes.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

No meu caso, estou querendo que a aplicao crie apenas o help do cdigo
que desenvolvi dentro do projeto, com isso, na opo OUTPUTTARGET
escolhi a o valor HTML HELP. s clique no boto ao lado de salvar
chamado BUILD.
Depois disso, o build foi completo gerando um arquivo .chm dentro do
diretrio indicado.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Prontinho, depois disso s verificar o arquivo .chm.

Espero ter ajudado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Criptografia de String de Conexo no Web.Config


Visual Studio.NET 2005

Mostro como trabalhar com criptografia da string de conexo dentro do


web.config. Dessa forma, qualquer pessoa, lamer, larva, hacker, cracker,
phreaker ou guruque invadir o servidor e tentar abrir o banco de dados
verificando em seu arquivo de configurao web.config; no conseguir ver
qual o banco de dados, senha e usurio. Com isso a segurana do seu
sistema fica bem mais confivel e prtico.
Se ainda no sabe qual a diferena entre eles. Disponibilizei nas referncias
abaixo.

Lamer: o principiante que se acha o mximo. Acabou de ganhar um


micro e j quer invadir os computadores do Pentgono. Normalmente so
odiados pelos Hacker verdadeiros.
Referncia: 1.1

Larva: Est se tornando um verdadeiro Hacker. J consegue desenvolver


suas prprias tcnicas para invadir sistemas.
Referncia: 1.2

Hacker:

Tem

conhecimentos

reais

de

programao

de

sistemas

operacionais, principalmente o Unix e o Linux, que so os mais usados


pelos servidores da Internet. Conhece quase todas as falhas de segurana
dos sistemas e procura achar novas. Desenvolve suas prprias tcnicas e
programas de invao, e despreza as receitas de bolo. Tenta invadir
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


apenas para o conhecimento, geralmente no faz nada com os dados que
conseguiu pegar.
Referncia: 1.3

Cracker: o Hacker do mal, que invade sistemas, rouba dados e arquivos,


nmeros de carto de crdito, faz espionagem industrial e destri dados.
Referncia: 1.4

Phreaker: Hacker com bons conhecimentos de telefonia que consegue


inclusive fazer chamados internacionais sem pagar, o que lhe permite
desenvolver seus ataques a partir de um servidor de outro pas.
Referncia: 1.5

Guru: O mestre dos Hackers.


Referncia: 1.6
Depois de toda essa definio e conhecendo o inimigo, irei mostrar como
evitar pelo menos uma invaso usando o arquivo de configurao de uma
aplicao totalmente aberto, que o Web.Config e App.Config.
Bom, antes de tudo segue mais uma frase criptografada para conhecimento
e possibilidade de ganhar prmios se for descriptografada.
Ftuvep nvjup f nf nboef f-nbjm dpn p ujuvmp: eftdsiruphsbgfj.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Voltando, criei uma class libary para desenvolver um framework, porm no
necessrio criar, s coloque os mtodos em uma classe segura e legal.
Utilizo com class libary e adiciono como referncia do projeto, dessa forma
fica tambm seguro o cdigo porque s vai a DLL em si.
Criei uma classe chamada Criptografia.cs. (Referncia 1.7)

Referncia: 1.7
O primeiro mtodo que irei criar o que pega os valores do arquivo de
configurao e descriptografa. (Referncia 1.8)

/// <summary>
/// Mtodo que descriptografa dados
/// Pega do App.config ou Web.Config automaticamente
/// </summary>
/// <returns></returns>
public string DecryptConnectionString()
{
Byte[] b =
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Convert.FromBase64String(ConfigurationSettings.AppSettings["ConnectionS
tring"]);
string decryptedConnectionString =
System.Text.ASCIIEncoding.ASCII.GetString(b);
return decryptedConnectionString;
}
Referncia: 1.8
Explicao:
No tem muito que explicar no mtodo, mesmo assim tentarei clarear se
tiver alguma coisa obscura. A primeira linha, pego o que est no arquivo de
configurao, converto para FromBase64String deixando a mesma em uma
varivel do tipo byte. A segunda linha de cdigo, pego a string do codigo
ASCII passando o valor armazenado na varivel anterior e depois s retorno
o valor descriptografado.
Uma dica : no meu arquivo de configurao est criptografada, no ato de
usar ou conectar no banco de dados, use o mtodo para descriptografar, ou
seja, antes do Open().

Criptografando ConnectionString
Fiz um outro mtodo que responsvel para criptografar a string de
conexo. (Referncia 1.9)

/// <summary>
/// Mtodo para encriptografar string de conexao.
/// Pega a conexao passada
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
public string EncryptConnectionString(string connectionString)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


{
Byte[] b =
System.Text.ASCIIEncoding.ASCII.GetBytes(connectionString);
string encryptedConnectionString = Convert.ToBase64String(b);
return encryptedConnectionString;
}
Referncia: 1.9
Explicao:
A assinatura do mtodo um pouco diferente do anterior, agora existe um
parmetro de entrada do tipo string. Depois, converto a string passada para
o codigo ASCII, armazenando na varivel (b) do tipo byte. Converti para
ToBase64 a varivel byte, armazenei em uma string e retornei o valor para
quem chamou.

Arquivo de Configurao
Criei

uma

aplicao

WindowForm,

toda

aplicao

desse

tipo

automaticamente usado um arquivo de configurao chamado App.Config.


(Referncia 2.0)

<?xml version="1.0" encoding="utf-8" ?>


<configuration>
<appSettings>
<add key="ConnectionString"
value="UGFzc3dvcmQ9MTIzOyBQZXJzaXN0IFNlY3VyaXR5IEluZm89VHJ1ZTs
gVXNlciBJZD1zYTsgSW5pdGlhbCBDYXRhbG9nPUJER0VDT1JFOyBEYXRhIFNv
dXJjZT1zdGYtbHVpcw=="/>
</appSettings>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

</configuration>
Referncia: 2.0
Layout da tela (Referncia 2.1)

Referncia: 2.1
Dados da tela.
Label
Id = Label1
---------------------------------------------------------------------------------------TextBox
Id = textBox2
MultLine = True
----------------------------------------------------------------------------------------Label
Id = Label2
----------------------------------------------------------------------------------------Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


TextBox
Id = textBox1
MultLine = True
----------------------------------------------------------------------------------------

Button
Id = button1
Text = button1
Referncia: 2.2
Cliquei duas vezes no boto, logo em seguida inclui o seguinte cdigo.
(Referncia 2.3)

private void button1_Click(object sender, EventArgs e)


{
string con = (string)
ConfigurationSettings.AppSettings["ConnectionString"];
Cript.Dados.Criptografia cript = new Cript.Dados.Criptografia();
label1.Text = "Descriptografado: " +
cript.DecryptConnectionString();
label2.Text = "Criptografada: " + con;
textBox1.Text = label1.Text;
textBox2.Text = label2.Text;
}
Referncia: 2.3
Explicao:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Primeiramente peguei a string de conexo usando o configurationsettings.
Deve ser importado antes a linha: using System.Configuration;
Instanciei o a classe de criptografia criada anteriormente, armazenando a
string descriptografada no label1 e a armazenada no label2.

Resultado final da aplicao criada. (Referncia 2.4)

Referncia: 2.4

Bom, esse o resultado final de todo trabalho.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Gravando Erros com Exception - Parte I


Usando arquivo de log.

Irei mostrar como gravar dentro de um arquivo de log, os erros gerados de


dentro da sua aplicao. Nesse primeiro passo irei criar uma classe
chamada AppException.cs com um mtodo chamado LogErro.
Requisitos:
- Ferramenta Visual Studio.NET 2003 ou 2005;
- Conhecimento em escrita de arquivo;
- Conhecimento da linguagem C#.NET.
Criarei usando a IDE 2003 da Microsoft. (Referncia 1.1 Exception Parte I)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.1 Exception Parte I


Criao da classe (Referncia 1.2 Exception Parte I)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.2 Exception Parte I

A referncia 1.2 apenas mostra a classe que gerei dentro da pasta WEB. No
prximo passo gerar o mtodo que registra o log dentro do arquivo de
erro.log. (Referncia 1.3 Exception Parte I)

public static void LogError(string message)


{
HttpContext context = HttpContext.Current;
string filePath =
context.Server.MapPath(System.Convert.ToString(System.Configuration.Co
nfigurationSettings.AppSettings["ErrorLogFile"]));
int gmtOffset = DateTime.Compare(DateTime.Now,
DateTime.UtcNow);
string gmtPrefix;
if (gmtOffset > 0)
{
gmtPrefix = "+";
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


}
else
{
gmtPrefix = "";
}
string errorDateTime = DateTime.Now.Year.ToString() +
"." + DateTime.Now.Month.ToString() + "." +
DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() +
":" + DateTime.Now.Minute.ToString() + ":" +
DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix +
gmtOffset.ToString() + ")";
try
{
System.IO.StreamWriter sw = new
System.IO.StreamWriter(filePath, true);
sw.WriteLine("## " + errorDateTime + " ## " +
message + " ##");
sw.Close();
}
catch
{
}
}
Referncia: 1.4 Exception Parte I
Explicao:
Comeando com a assinatura do mtodo.

public static void LogError(string message)


Referncia: 1.5 Exception Parte I

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


um mtodo publico e esttico que no retorna valor algum e recebe um
parmetro de entrada do tipo string.

HttpContext context = HttpContext.Current;


string filePath =
context.Server.MapPath(System.Convert.ToString(System.Configuration.Co
nfigurationSettings.AppSettings["ErrorLogFile"]));
Referncia: 1.6 Exception Parte I
A referncia 1.6 apenas pego a configurao do arquivo que est descrito
dentro do arquivo de configurao web.config. Mostrarei o mesmo mais pra
frente.

int gmtOffset = DateTime.Compare(DateTime.Now, DateTime.UtcNow);


string gmtPrefix;
if (gmtOffset > 0)
{
gmtPrefix = "+";
}
else
{
gmtPrefix = "";
}
string errorDateTime = DateTime.Now.Year.ToString()
+ "." + DateTime.Now.Month.ToString() + "." +
DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() +
":" + DateTime.Now.Minute.ToString() + ":" +
DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix +
gmtOffset.ToString() + ")";
Referncia: 1.7 Exception Parte I

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


A referncia 1.7, configuro apenas as horas, data, segundo e minuto que ir
ser gravado junto ao arquivo de configurao.

try
{
System.IO.StreamWriter sw = new
System.IO.StreamWriter(filePath, true);
sw.WriteLine("## " + errorDateTime + " ## " +
message + " ##");
sw.Close();
}
catch
{
}
Referncia: 1.8 Exception Parte I
Essa ltima referncia 1.8 apenas abre o arquivo e escreve os valores
setados anteriormente dentro do arquivo e fecha.

Bom, fico por aqui.


No prximo passo mostrarei mais algumas configuraes e mtodos criados
para utilizao por completo.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Gravando Erros com Exception no arquivo de log - Parte II.doc


Visual Studio.NET 2005

Estou disposto a ensinar nessa parte II como gravar e mostrar o


funcionamento para gravar o erro gerado em sua aplicao. muito
importante usar uma funcionalidade dessas na aplicao.
A cada erro que ocorrer dentro do software, site ou sistema interno o
mesmo ir gravar em um arquivo de log, que pode ser visualizado em
qualquer hora. O mesmo mostra a linha, a classe, hora, data e o erro em si
do que aconteceu. Facilita muito para ser resolvido o problema.
A parte I criada anteriormente, pode ser acessada pelo link:
www.aspneti.com ou www.aspneti.com.br
No posso deixar de falar da nova ferramenta express criada pela Microsoft.
uma ferramenta grtis para o desenvolvimento e pode ser adquirida via
internet. Tanto o banco de dados quanto a ferramenta de desenvolvimento
pode ser baixada gratuitamente.
http://msdn.microsoft.com/vstudio/express/
Continuando, na parte I mostrei o mtodo principal que escreve dentro do
arquivo de log no diretrio do sistema. Nessa parte mostrarei os outros
mtodos construtores dentro da classe.
Como

foi

falando

junto

parte

I,

criei

uma

classe

chamada

AppException.cs. (Referncia 1.1)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 1.1 Exception Parte II

J foi mostrado o mtodo LogError anteriormente explicando linha por linha.


(Referncia 1.2 Exception Parte II)

public static void LogError(string message)


{
HttpContext context = HttpContext.Current;
string filePath =
context.Server.MapPath(System.Convert.ToString(System.Configuration.Co
nfigurationSettings.AppSettings["ErrorLogFile"]));
int gmtOffset = DateTime.Compare(DateTime.Now,
DateTime.UtcNow);
string gmtPrefix;
if (gmtOffset > 0)
{
gmtPrefix = "+";
}
else
{
gmtPrefix = "";
}
string errorDateTime = DateTime.Now.Year.ToString() +
"." + DateTime.Now.Month.ToString() + "." +
DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() +
":" + DateTime.Now.Minute.ToString() + ":" +
DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix +
gmtOffset.ToString() + ")";
try
{
System.IO.StreamWriter sw = new
System.IO.StreamWriter(filePath, true);

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


sw.WriteLine("## " + errorDateTime + " ## " +
message + " ##");
sw.Close();
}
catch
{
}
}
Referncia: 1.2 Exception Parte II
No passo seguinte, dentro da mesma classe criei os mtodos construtores.
(Referncia 1.3 Exception Parte II).

public AppException()
{
//apenas chamo o mtodo para log de erro
LogError("An unexpected error occurred.");
}
public AppException(string message)
{
//chamo o mtodo passando o parmetro passado na assinatura
do mtodo.
LogError(message);
}
public AppException(string message, Exception
innerException)
{
//mandando a mensagem para o log de erro
LogError(message);
if (innerException != null)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


{
//se a mensagem de exception for diferente de null o mesmo
manda as mensagem para a classe de log de erro.
LogError(innerException.Message);
LogError(innerException.StackTrace);
}
}
Referncia: 1.3 Exception Parte II
Explicao:
Note que a referncia 1.3 possui o comentrio de todas as linhas dos
mtodos construtores. Existem trs mtodos, um sem parmetro de
entrada, outro com parmetro de entrada do tipo string, cujo recebe apenas
uma mensagem e outro mtodo recebendo uma string mensagem e uma
exception, ou seja, uma mensagem do tipo Exception.
Todos os mtodos possuem o mesmo nome, isso significa que sobre
posio de mtodo.
Se tiver alguma dvida em relao ao cdigo mostrado, leia o comentrio
de cada linha.

Configurao
O prximo passo configurar endereo do arquivo log. Esse arquivo de
configurao dentro da aplicao pode ser o web.config ou o app.config
sem problema algum. (Referncia 1.4 Exception Parte II)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

<appSettings>
<add key="ErrorLogFile" value="~/Errors/ErrorLog.txt" />
</appSettings>
Referncia: 1.4 Exception Parte II
Explicao:
Existe a tag <appSettings> onde posso atribuir qualquer tipo de cdigo ou
endereo que quiser. No meu caso, coloquei uma chave chamada
ErrorLogFile, com o valor indicando o endereo do arquivo .txt. (Referncia
1.5 Exception Parte II).

<add key="ErrorLogFile" value="~/Errors/ErrorLog.txt" />


Referncia: 1.5 Exception Parte II
O arquivo .txt j criado e colocado dentro da pasta Errors no tem nada
dentro. (Referncia 1.6 Exception Parte II)

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.6 Exception Parte II


um arquivo simples e qualquer.
Pronto, depois e ter o arquivo, criar a classe de appException.cs, criar os
mtodos necessrios; s falta forar um erro para mostrar a real
funcionalidade.
Para quem no entendeu direito ou precisa do cdigo da classe inteiro,
segue a referncia 1.7 com todo o contedo necessrio.

using System;
using System.Diagnostics;
using System.Web;
namespace WebChamps.Components.Web
{
/// <summary>
/// </summary>
public class AppException: System.ApplicationException

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


{
public AppException()
{
LogError("An unexpected error occurred.");
}
public AppException(string message)
{
LogError(message);
}
public AppException(string message, Exception innerException)
{
LogError(message);
if (innerException != null)
{
LogError(innerException.Message);
LogError(innerException.StackTrace);
}
}

public static void LogError(string message)


{
HttpContext context = HttpContext.Current;
string filePath =
context.Server.MapPath(System.Convert.ToString(System.Configuration.Co
nfigurationSettings.AppSettings["ErrorLogFile"]));
int gmtOffset = DateTime.Compare(DateTime.Now,
DateTime.UtcNow);
string gmtPrefix;
if (gmtOffset > 0)
{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


gmtPrefix = "+";
}
else
{
gmtPrefix = "";
}
string errorDateTime = DateTime.Now.Year.ToString() +
"." + DateTime.Now.Month.ToString() + "." +
DateTime.Now.Day.ToString() + " @ " + DateTime.Now.Hour.ToString() +
":" + DateTime.Now.Minute.ToString() + ":" +
DateTime.Now.Second.ToString() + " (GMT " + gmtPrefix +
gmtOffset.ToString() + ")";
try
{
System.IO.StreamWriter sw = new
System.IO.StreamWriter(filePath, true);
sw.WriteLine("## " + errorDateTime + " ## " +
message + " ##");
sw.Close();
}
catch
{
}
}
}
}
Referncia: 1.7 Exception Parte II

Na parte III mostrarei como utilizar a classe de erro usando como


componente referenciado.
Espero ter ajudado de alguma forma.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

GridView Parte I
Visual Studio .NET 2005

Mostrarei como desenvolver e usar esse grande componente do Visual


Studio.NET 2005 chamado GridView. Voltando um pouco a histria, no ASP
3.0 nenhum componente existia antes para melhorar o nvel de codificao
ou a velocidade de desenvolvimento, j no Visual Studio.NET 2003 surgiu
um componente chamado DataGrid que revolucionou o mercado dos
desenvolvedores. Na prtica, esse componente acaba virando uma <table>
com vrios <tr> e <td>.

Antes de continuar segue uma frase criptografada, se voc conseguir


decifrar poder ganhar um livro.
Nf nboeb f-nbjm dpn p bttvoup hboifj p mjxsp.

Com o novo lanamento do Visual Studio, foi lanado um novo componente


junto da IDE. Vou dizer que parente do DataGrid porque bem parecido
em relao ao desenvolvimento. Possibilita as grandes artimanhas para o
programador.
Existem vrias formas ou para ser mais exato duas formas fceis e rpidas
para preencher um GridView: uma usando o visual e outra usando o
cdigo mesmo. No irei mostrar nada pelo visual, sinceramente no gosto
programar usando apenas o visual; gosto de saber o que est acontecendo
no cdigo mesmo. Se voc quiser usar o visual, existem artigos pela
internet que podem mostrar como utilizar.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.1 GridView


Como posso notar, os componentes esto todos no toolbox igual ao VS
2003, porm agora organizados por funcionalidades e funes. O que est
circulado de vermelho mostra todos os componentes de DATA. O GridView
est selecionado de azul e est ao lado direito da tela.
Mostrarei como editar, deletar dados e preencher grid. Em relao
conexo com o banco de dados, conexo e select no ser mostrada porque
uso um framework de dados que fiz.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Depois que coloquei o componente na tela, irei preench-lo.
Fui ao banco de dados e trouxe uma lista de dados chamada dataset.
Para entender, criei uma outra classe responsvel para ir ao banco de
dados, ou seja, uma outra camada que responsvel apenas para acessar
os dados e traz-los.
Cdigo HTML do GridView.

GridView
Id = gdBancoServidor

HTML do GridView
<asp:GridView ID="gdBancoServidor" runat="server" CellPadding="4"
AutoGenerateColumns="False" Width="70%" AllowPaging="True"
GridLines="None"
OnRowEditing="gdBancoServidor_RowEditing"
OnRowCancelingEdit="gdBancoServidor_RowCancelingEdit"
OnRowUpdating="gdBancoServidor_RowUpdating"
DataKeyNames="IdCooperativa"
OnRowDeleting="gdBancoServidor_RowDeleting">
<AlternatingRowStyle
BackColor="#cdcdcd" />
<HeaderStyle
BackColor="#CCCCCC" HorizontalAlign="Left" />
<PagerStyle
HorizontalAlign="Left" />
<Columns>
<asp:TemplateField

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


ShowHeader="false">
<ItemTemplate>
<asp:Label
Visible="false" ID="lblIdCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa")%>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
Visible="false" ID="txtIdCooperativa" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
HeaderText="NR COOP">
<ItemTemplate>
<asp:Label
ID="lblNumCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "NumCooperativa")%>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtNumCooperativa" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "NumCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


HeaderText="BANCO DE DADOS">
<ItemTemplate>
<asp:Label
ID="lblInitialCatalog" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "InitialCatalog") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtInitialCatalog" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "InitialCatalog") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
ShowHeader="true" HeaderText="SERVIDOR">
<ItemTemplate>
<asp:Label
ID="lblDataSource" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "DATASOURCE") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtDataSource" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "DATASOURCE") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


ShowHeader="true" HeaderText="AMBIENTE">
<ItemTemplate>
<asp:Label
ID="lblIdAmbiente" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdAmbiente") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtIdAmbiente" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdAmbiente") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField
ButtonType="Button" CancelText="C" DeleteText="D" EditText="E"
HeaderText="A&#199;&#195;O"
InsertVisible="False"
ShowDeleteButton="true" ShowEditButton="True" UpdateText="A" />
</Columns>
<PagerSettings
Mode="NumericFirstLast" Position="TopAndBottom"
FirstPageText="Primeira" LastPageText="&#218;ltima" />
</asp:GridView>
Referncia: 1.2 GridView
A referncia 1.2 GridView bem particular porque o mesmo mostra apenas
os campos do meu bando de dados. Serve como exemplo onde voc possa
seguir e desenvolver o seu.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cdigo Behing

No prximo passo preencher o grid utilizando o cdigo C#.NET.


No mtodo Load coloquei o seguinte cdigo: (Referncia 1.3 GridView)

if (!Page.IsPostBack)
{
PreencheGridView();
}
Referncia: 1.3 GridView
Logo depois criei o mtodo da referncia 1.3 GridView.

/// <summary>
/// Mtodo que preenche o grid view
/// </summary>
private void PreencheGridView()
{
//instanciando mtodo dentro da pgina.
//camada de cima.
ConfigurarConexao config = new ConfigurarConexao();
this.gdBancoServidor.DataSource =
config.SelecionarConfiguracaoOffLine();
this.gdBancoServidor.DataBind();
}
Referncia: 1.4 GridView
Explicao:
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


simples, fcil e prtico. Chamei o mtodo SelecionarConfiguracaoOffLine()
que responsvel para trazer os dados como DataSet. Depois de pegar os
dados e vincular ao DataSource do GridView, s chamar o DataBind(). No
diferente do componente DataGrid do VS 2003.
O mtodo SelecionarConfiguracaoOffLine() faz o seguinte: Conecta no
banco de dados, faz o select na tabela de dados e retorna os campos que
irei preencher no GridView como DataSet, apenas isso.
Executei o cdigo e mesmo foi preenchido automaticamente. (Referncia
1.5 GridView)

Referncia: 1.5 GridView

Bom, fico por aqui e espero ter ajudado. Na segunda parte mostrarei como
editar e deletar dados gridview.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

GridView Parte II
Visual Studio.NET 2005

Ol pessoal, estarei aqui para mostrar como editar montando o mtodo


RowEditing e RowUpdating. De certa forma bem simples e legal de usar.
Em um projeto web que fiz para um banco, tive que guardar como controle
os dados antes de ser mudados, ou seja, tive que pegar os dados anteriores
e os dados atuais editados pelo usurio para gravar em uma tabela de
controle e log.
Bom, essa uma continuao da parte I, se ainda no leu, por favor, leia e
entenda como foi feito anteriormente. Nessa parte anterior, mostrei como
preencher o GridView, veja como ficou. (2.1 GridView Parte II)

Referncia: 2.1 GridView Parte II


Explicao:
Entro com os dados e clico no boto Salvar, o GridView mostra os dados
que foram gravados no banco de dados. Muito simples e fcil para
desenvolver.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Editar
Quando for editar os campos do meu GridView, deve ser feito antes de tudo
o html para saber quais os campos sero editados. No meu caso, defini
todos os meus campos do Grid para serem editados.

<Columns>
<asp:TemplateField
ShowHeader="false">
<ItemTemplate>
<asp:Label
Visible="false" ID="lblIdCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa")%>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
Visible="false" ID="txtIdCooperativa" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
HeaderText="NR COOP">
<ItemTemplate>
<asp:Label
ID="lblNumCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "NumCooperativa")%>
</asp:Label>
</ItemTemplate>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<EditItemTemplate>
<asp:TextBox
ID="txtNumCooperativa" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "NumCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
HeaderText="BANCO DE DADOS">
<ItemTemplate>
<asp:Label
ID="lblInitialCatalog" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "InitialCatalog") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtInitialCatalog" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "InitialCatalog") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
ShowHeader="true" HeaderText="SERVIDOR">
<ItemTemplate>
<asp:Label
ID="lblDataSource" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "DATASOURCE") %>
</asp:Label>
</ItemTemplate>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<EditItemTemplate>
<asp:TextBox
ID="txtDataSource" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "DATASOURCE") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
ShowHeader="true" HeaderText="AMBIENTE">
<ItemTemplate>
<asp:Label
ID="lblIdAmbiente" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdAmbiente") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtIdAmbiente" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdAmbiente") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField
ButtonType="Button" CancelText="C" DeleteText="D" EditText="E"
HeaderText="A&#199;&#195;O"
InsertVisible="False"
ShowDeleteButton="true" ShowEditButton="True" UpdateText="A" />
</Columns>
Referncia: 2.2 GridView Parte II

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Dentro

da

tag

<Columns>

existem

as

tags

<ItemTemplate>

<EditItemTemplate>. (Referncia 2.3 GridView Parte II)

<asp:TemplateField ShowHeader="false">
<ItemTemplate>
<asp:Label
Visible="false" ID="lblIdCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa")%>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
Visible="false" ID="txtIdCooperativa" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
Referncia: 2.3 GridView Parte II
Todo campo de dentro da Tag <EditItemTemplate> existe um textbox onde
o mesmo pode ser alterado ou editado.Para no ter um campo editado, s
tirar a tag <EditItemTemplate> com todo o seu contedo.
Cliquei no mode design, selecionei o GridView, logo depois em propriedades
e no campo Events. Esse componente mudou um pouco em relao ao
antigo DataGrid. Agora o modo para fazer a edio, cliquei no mtodo
RowEditing onde redirecionado automaticamente ao code behing.(2.4
GridView Parte II).

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 2.4 GridView Parte II


Code Behing
Indo para o code behing digitei o cdigo de referncia 2.5 GridView Parte II.

/// <summary>
/// Mtodo que transforma os dados em campos para serem editados
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdBancoServidor_RowEditing(object sender,
GridViewEditEventArgs e)
{
this.gdBancoServidor.EditIndex = e.NewEditIndex;
PreencheGridView();
}
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 2.5 GridView Parte II


Explicao:
Depois que coloquei o comando e.NewEditIndex, mandei preencher o grid
novamente. Note que fiz um mtodo especfico para buscar os dados e
preench-lo. O mtodo chama PreencheGridView().
O que esse mtodo faz apenas abrir o banco de dados, fazer o select e
retornar os dados do tipo DataSet.Usando o Edit os campos editveis iro
se tornar campos textBox onde o cliente ou usurio poder mudar o valor.
Seguindo com a aplicao, agora utilizo da mesma forma, porm chamo
outro mtodo chamado RowUpdating. (Referncia 2.4 GridView Parte II).
Cliquei no RowUpdating e digitei o cdigo. (2.6 GridView Parte II)

/// <summary>
/// Mtodo que atualiza os dados informados pelo cliente.
/// Os mesmos sao enviados para um camada de negocio
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdBancoServidor_RowUpdating(object sender,
GridViewUpdateEventArgs e)
{
//capturando os valores
GridViewRow gvr = this.gdBancoServidor.Rows[e.RowIndex];
string txtIdCooperativa =
((TextBox)gvr.FindControl("txtIdCooperativa")).Text;
string txtNumCooperativa =
((TextBox)gvr.FindControl("txtNumCooperativa")).Text;
string txtInitialCatalog =

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


((TextBox)gvr.FindControl("txtInitialCatalog")).Text;
string txtDataSource =
((TextBox)gvr.FindControl("txtDataSource")).Text;
string txtIdAmbiente =
((TextBox)gvr.FindControl("txtIdAmbiente")).Text;
if
(config.AtualizarCooperativaOffLine(Convert.ToInt32(txtIdCooperativa),
txtNumCooperativa, txtInitialCatalog, txtDataSource,
Convert.ToInt32(txtIdAmbiente)))
{
this.gdBancoServidor.EditIndex = -1;
PreencheGridView();
}
}
Referncia: 2.6 GridView Parte II
Explicao:
O mtodo est todo comentado.
O que sempre difcil quando usa GridView pegar os dados que foram
editados. Atribui o valor a uma string declarada. (2.7 GridView Parte II)

string txtIdAmbiente = ((TextBox)gvr.FindControl("txtIdAmbiente")).Text;


Referncia: 2.7 GridView Parte II
Uso o comando FindControl para pegar o id do campos e atribui a varivel
string.
Para atualizar os dados utilizo uma outra classe responsvel para acessar o
banco e atualizar os dados. O cdigo 2.8 GridView Parte II passa os dados
para a o mtodo onde atualiza o cdigo do GridView.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

if (config.AtualizarCooperativaOffLine(Convert.ToInt32(txtIdCooperativa),
txtNumCooperativa, txtInitialCatalog, txtDataSource,
Convert.ToInt32(txtIdAmbiente)))
{
this.gdBancoServidor.EditIndex = -1;
PreencheGridView();
}
Referncia: 2.8 GridView Parte II

Cancelar
Para cancelar o modo de edio, utilizei a referncia 2.4 clicando no events
RowCancelingEdit. bem simples e fcil. (2.9 GridView Parte II)

/// <summary>
/// Mtodo que cancela a edio e retorna para a forma correta
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdBancoServidor_RowCancelingEdit(object sender,
GridViewCancelEditEventArgs e)
{
this.gdBancoServidor.EditIndex = -1;
PreencheGridView();
}
Referncia: 2.9 GridView Parte II
Explicao:
O cdigo que cancela a edio apenas o EditIndex = -1 e depois mando
preencher o grid novamente.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

No cdigo HTML do GridView basta colocar a linha. (Referncia 3.0 GridView


Parte II).

<asp:CommandField ButtonType="Button" CancelText="C" DeleteText="D"


EditText="E" HeaderText="A&#199;&#195;O"
InsertVisible="False"
ShowDeleteButton="true" ShowEditButton="True" UpdateText="A" />
Referncia: 3.0 GridView Parte II

Cdigo em funcionamento

Referncia: 3.1 GridView Parte II

Cliquei no Editar.

Referncia: 3.2 GridView Parte II

Cliquei no Cancelar

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Referncia: 3.3 GridView Parte II

Mudando os dados

Referncia: 3.4 GridView Parte II

Valor mudado

Referncia: 3.5 GridView Parte II

Bom, eu fico por aqui.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

GridView Parte III


Visual Studio .NET 2005

Mostrarei nessa parte III como deletar dados usando o novo componente da
IDE 2005 da Microsoft chamado GridView.
uma seqncia que necessita seguir passo a passo.
Parte I:
http://www.aspneti.com/visualizar/downloadArtigo.aspx?ch_artigos=152
Parte II:
http://www.aspneti.com/visualizar/downloadArtigo.aspx?ch_artigos=155

<asp:GridView ID="gdBancoServidor" runat="server" CellPadding="4"


AutoGenerateColumns="False" Width="70%" AllowPaging="True"
GridLines="None"
OnRowEditing="gdBancoServidor_RowEditing"
OnRowCancelingEdit="gdBancoServidor_RowCancelingEdit"
OnRowUpdating="gdBancoServidor_RowUpdating"
DataKeyNames="IdCooperativa"
OnRowDeleting="gdBancoServidor_RowDeleting">
<AlternatingRowStyle
BackColor="#cdcdcd" />
<HeaderStyle

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


BackColor="#CCCCCC" HorizontalAlign="Left" />
<PagerStyle
HorizontalAlign="Left" />
<Columns>
<asp:TemplateField
ShowHeader="false">
<ItemTemplate>
<asp:Label
Visible="false" ID="lblIdCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa")%>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
Visible="false" ID="txtIdCooperativa" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
HeaderText="NR COOP">
<ItemTemplate>
<asp:Label
ID="lblNumCooperativa" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "NumCooperativa")%>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtNumCooperativa" runat="server"
Text='<%#

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


DataBinder.Eval(Container.DataItem, "NumCooperativa") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
HeaderText="BANCO DE DADOS">
<ItemTemplate>
<asp:Label
ID="lblInitialCatalog" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "InitialCatalog") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtInitialCatalog" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "InitialCatalog") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
ShowHeader="true" HeaderText="SERVIDOR">
<ItemTemplate>
<asp:Label
ID="lblDataSource" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "DATASOURCE") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtDataSource" runat="server"
Text='<%#

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


DataBinder.Eval(Container.DataItem, "DATASOURCE") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField
ShowHeader="true" HeaderText="AMBIENTE">
<ItemTemplate>
<asp:Label
ID="lblIdAmbiente" runat="server">
<%#
DataBinder.Eval(Container.DataItem, "IdAmbiente") %>
</asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox
ID="txtIdAmbiente" runat="server"
Text='<%#
DataBinder.Eval(Container.DataItem, "IdAmbiente") %>'>
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField
ButtonType="Button" CancelText="C" DeleteText="D" EditText="E"
HeaderText="A&#199;&#195;O"
InsertVisible="False"
ShowDeleteButton="true" ShowEditButton="True" UpdateText="A" />
</Columns>
<PagerSettings
Mode="NumericFirstLast" Position="TopAndBottom"
FirstPageText="Primeira" LastPageText="&#218;ltima" />
</asp:GridView>
Referncia: 3.0 GridView Parte III

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


O cdigo do grid est na referncia 3.0 onde existe uma linha que
importante para o exemplo que irei mostrar a seguir. (Referncia 3.1
GridView Parte III)

DataKeyNames="IdCooperativa"
Referncia: 3.1 GridView Parte III
A referncia 3.1 chamada DataKeyNames com o valor IdCooperativa,
significa que a chave da tabela onde pode ser apagada est com o nome
IdCooperativa. O cdigo que ir pegar a chave para deletar o registro, vai
ser desse campo.
No laytout da pgina mostra dois botes. Um com o texto para o usurio
ver E e outro D, ou seja, Editar e Deletar. (Referncia 3.2 GridView
Parte III).

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 3.2 GridView Parte III


Como falado anteriormente, mostrarei como apagar um dado que est
aparecendo no componente no clique do boto D. Cliquei com boto
direito em cima do grid e logo depois em properties. Em seguida, cliquei
no cone events que parece um raiozinho. A propriedade que agora
usado chama-se RowDeleting. Cliquei duas vezes na mesma e foi criado
um mtodo automaticamente gdBancoServidor_RowDeleting.

Mtodo RowDeleting

/// <summary>
/// Mtodo que pega o valor e manda para a camada acima para deletar

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


/// o valor informado da tabela.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void gdBancoServidor_RowDeleting(object sender,
GridViewDeleteEventArgs e)
{
string idCooperativa =
this.gdBancoServidor.DataKeys[e.RowIndex]["IdCooperativa"].ToString();
if (config.ExcluirCooperativaOffLine(Convert.ToInt32(idCooperativa)))
{
this.gdBancoServidor.EditIndex = -1;
PreencheGridView();
}
}
Referncia: 3.3 GridView Parte III
Explicao:
Para pegar o valor chave do grid, atribui a uma string para utiliz-la mais
abaixo. (Referncia 3.4 GridView Parte III)

string idCooperativa =
this.gdBancoServidor.DataKeys[e.RowIndex]["IdCooperativa"].ToString();
Referncia: 3.4 GridView Parte III)
Pego o DataKeys, ou seja, o valor do campo chave. O [e.RowIndex] o
valor da linha clicada, para no pegar todos ou s o primeiro item de chave.
O [idCooperativa] o nome do campo que quero pegar. Dessa forma,
todo o valor fica armazenado na string idCooperativa.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


A segunda parte do cdigo, s chama o mtodo que exclui o valor passando
a chave cujo necessrio. Dentro desse cdigo, conecto no banco de
dados, adiciono o valor ao parmetro sql, e mando executar. O mesmo
retorna valor do tipo Boolean, ou seja, true ou false. (Referncia 3.5
GridView Parte III)

if (config.ExcluirCooperativaOffLine(Convert.ToInt32(idCooperativa)))
{
this.gdBancoServidor.EditIndex = -1;
PreencheGridView();
}
Referncia: 3.5 GridView Parte III
Se o mesmo retornar true, mando preencher o grid novamente. Esse
mtodo ExcluirCooperativaOffLine uma outra camada que tambm utiliza
outra camada para excluir os valores, ou seja, trs camadas. O intuito
mostrar como utilizar o gridView e no como conectar ou executar
parmetros no PL SQL.

Funcionamento
Depois do grid preenchido, irei excluir a linha do primeiro valor 0002.
(Referncia 3.6 GridView Parte III)

Referncia: 3.6 GridView Parte III

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cliquei no boto D (deletar) e o grid preencho novamente apenas com


dois registros no banco de dados. (Referncia 3.7 GridView Parte III)

Referncia: 3.7 GridView Parte III

Bom, fico por aqui.


Qualquer coisa, estamos ai.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Imprimir com Visual Studio.NET 2005 usando C#.NET.

importante falar antes de tudo que para imprimir muito fcil, o ato em
si muito fcil e simples, porm o devemos fazer algumas coisas para
melhorar o processo ou forma de fazer o mesmo.
Para comear o artigo definitivamente, no posso deixar de criptografar
mais uma frase a vocs. Tente decifra-la.

Dpnvojebef BTQOFUj.dpn

Veja que estou usando verdadeiramente o Visual Studio.NET 2005.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Essa ferramenta muito poderosa e de fcil desenvolvimento. Mesmo para
uma pessoa que nunca desenvolveu nenhuma linha de cdigo, fica fcil
desenvolver qualquer tipo de sistema autorizado e dinmico. Navegava no
frum da MSDN e percebi que muitas pessoas estavam comeando ou
migrando para essa ferramenta. Por exemplo, pessoas que programavam
com Visual Basic 6.0 e passaram para o VS 2005.

A essas pessoas,

importante informar que o ambiente agora WEB e de fcil manuseio.


Lgico que o ambiente windows tambm existem, mas estarei falando do
WEB. Lembro quando programava com Visual Basic e tinha que mandar
comandos para abrir o dialog e montar uma forma de impresso na mo
quando no usava Crystal Report.
Hoje em dia o nosso cliente, ou seja, o browser como IE ou outros do
mercado que gerencia isso em meu sistema.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Criei uma pgina chamada index.aspx cujo adicionei dois divs e um boto
para imprimir. Quando o cliente ou usurio clicar no boto imprimir, o
mesmo abrir a caixa pedindo para informar a quantidade de impresso ou
mesmo em qual impressora imprimir. Usando a programao em C#.NET
segue o cdigo para ver o exemplo.

Segue o cdigo da pgina:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class index : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void cmdImprimir_Click(object sender, EventArgs e)
{
Response.Write("<script>window.print();</script>");
}
}

Apenas a linha da cor vermelha mostra como chamar a impressora e


imprimir o contedo da pgina. Cliquei F5 e inicei o sistema normalmente,
depois de clicar o boto IMPRIMIR que aparece na tela abaixo:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Bem simples e fcil. Agora usando HTML, vou gerar uma impresso
dinmica como imprimir a pgina sem o titulo que est na pgina. Criei
outro boto para fazer o mesmo que chama cmdImprimirHTML. Veja a
idia dessa impresso:
Um boto html onde chama uma funo que esconde o titulo da pagina,
mando imprimir e depois mando o mesmo aparece novamente imprimindo
apenas o contedo. Segue o cdigo da pgina para anlise.

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="index.aspx.cs" Inherits="index" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Imprimir</title>
<script language=javascript>
function imprimir(){
window.titulo.style.display="none";
window.print();
window.titulo.style.display="";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="titulo">
Ttulo da pgina
</div>
<br /><br />
<div id="conteudo">
contedo da pgina
</div>
<br /><br />
<asp:Button ID="cmdImprimir" Text="Imprimir" runat="server"
OnClick="cmdImprimir_Click" />
&nbsp;
<input type="button" name="cmdImprimirHTML"
onclick="imprimir()" value="Imprimir HTML" />
</form>
</body>
</html>

Note o cdigo que est em vermelho.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Note que depois de clicar em imprimir, o titulo da pgina sumiu e logo aps
apareceu com o dialog de impressora.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Com isso, a mesma ir imprimir sem o titulo.


Espero ter ajudado e agradeo a todos.
Qualquer dvida estou a disposio para ajudar.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Label Server Control com Visual Studio.NET 2005.

Ol pessoal antes de comear gostaria de informar que a comunidade


ASPNETI.COM est de portas abertas para receber qualquer colaborador
que

deseja

publicar

artigos,

publicar

empregos,

vdeos

on-line

gratuitamente, desenvolver servios e postar perguntas.


Para acessar o site digite: www.aspneti.com ou www.aspneti.com.br

Referncia: 1.1
Existem vrios tipos de artigos, postagens, servios que podero te ajudar
muito.
Esse novo recurso do label server control bem significativo para quem no
usa ou no gosta de usar o mouse. Funciona com teclas de atalho mesmo
na web. Antigamente esse dispositivo no existia para softwares de
intranet, internet ou mesmo web.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


O controle para tecla de atalho existe na ferramenta IDE Visual Studio.NET
2005. Para algum como eu que gosta de tecla de atalho, nota que a
produtividade

tanto

do

desenvolvimento

de

sistemas

quanto

algum

atendimento ao cliente bem mais rpido para a utilizao apenas de


teclado.
Para mostrar um exemplo prtico, quando for h um banco; exatamente no
caixa onde existe um atendente, verifique se o mesmo usa mouse ou
qualquer dispositivo alm do teclado. Para a surpresa de todos, no existe
mouse algum, tudo feito com tecla de atalho ou o uso da tecla TAB. O
programa que esto usando chamado de cliente-servidor.
Agora com o sistema WEBFORM pode ter a mesma coisa e daqui pra frente
os sistemas WEBFORMS estaro cada vez mais perto dos sistemas clienteservidor e ainda agregando mais funes.

Praticando

Criei um projeto com a ferramenta 2005 e acrescentei o seguinte cdigo:


Pgina: Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Label Server Control</title>
</head>
<body>
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<form id="form1" runat="server">
<div>
<asp:Label ID="lblTitulo" runat="server"
AssociatedControlID="txtTitulo"
AccessKey="T"><u>T</u>itulo</asp:Label>
<asp:TextBox ID="txtTitulo" runat="server"></asp:TextBox>
<br /><br />
<asp:Label ID="lblTexto" runat="server"
AssociatedControlID="txtTexto"
AccessKey="e">T<u>e</u>xto</asp:Label>
<asp:TextBox ID="txtTexto" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>

Agora foi criado alguns atributos da tag <asp:Label onde pode ser
associado uma tecla de atalho automaticamente.

<asp:Label ID="lblTitulo" runat="server" AssociatedControlID="txtTitulo"


AccessKey="T"><u>T</u>itulo</asp:Label>
Referncia: 1.2
Na referncia 1.2 existe um atributo chamado AssociatedControlID onde
responsvel pela associao do campo, ou seja, o campo que o foco ser
posicionado. Outro atributo que tambm no existia anteriormente o
AccessKey, o mesmo responsvel em adicionar uma letra do teclado, ou
seja, quando as teclas ALT + T forem pressionadas o foco do campo
ser automaticamente associado para o campo do formulrio que foi
vinculado. bem simples, porm muito til para o dia a dia.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Antes de fechar o label, adicionei uma palavra Titulo apenas para que o
usurio veja o sinal, o cdigo <u> est apenas entre a letra T, que serve
apenas para sublinh-la mostrando para o usurio ou cliente que existe
uma tecla de atalho. No meu caso, escolhi a letra T, pode ser escolhido
qualquer tecla.

<asp:TextBox ID="txtTitulo" runat="server"></asp:TextBox>


<br /><br />
Referncia: 1.3
No posso deixar de criar o campo TextBox que foi associado pelo label.
Referncia 1.3.
No apenas a primeira letra que posso associar para uma tecla de atalho
do teclado. Pode ser feito em qualquer letra que preferir. Na referncia 1.4
associo sendo a vogal e.

<asp:Label ID="lblTexto" runat="server" AssociatedControlID="txtTexto"


AccessKey="e">T<u>e</u>xto</asp:Label>
Referncia: 1.4
Com o exemplo da referncia 1.4, aperto as teclas ALT + E e o foco
automaticamente redirecionado para o campo TextBox chamado txtTexto.

<asp:TextBox ID="txtTexto" runat="server"></asp:TextBox>


Referncia: 1.5
Mais uma vez, no posso esquecer de adicionar o campo citado pelo
atributo AssociatedControlID.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.6
O exemplo em funcionamento mostra que apertando as teclas de atalhos, o
foco ser redirecionado automaticamente para o campo especfico.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Misturando dados
Obfuscar dados com Visual Studio.NET 2005

Ol pessoal, a minha inteno mostrar como fcil misturar alguns dados


com rapidez e segurana. Mostrarei o exemplo sendo aplicado com
aplicao windows form, porm pode ser usada da mesma forma em vrios
outros tipos de aplicaes como: web form ou pocketc pc.

Pr-requisitos:

- Visual Studio.NET 2005;


- Conhecimento avanado C#.NET;
- Disposio para aprender e ser pr-ativo.

Antes

de

tudo,

volto

com

as

minhas

frases

criptografadas,

tente

descriptografar e guanhar um prmio se for um dos primeiros.

Nf

nboef

f-nbjl

dpn

ujuvmp:

Eftdsjquphsbgfj

gsbtd

qfsgfjubnfouf.
Para o comeo, criei um projeto com o nome de WindowsAplication1.
Dentro dele criei um form chamado Form2.cs. Por enquanto est bem
bsico, tente seguir passo a passo.
Na referncia 1.1 mostra como foi montado o layout da janela, porm o que
quero mostrar apenas a funcionalidade em si e para que v servir daqui
pra frente.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.1

Propriedades do form:

Nome do form: Form2


Objetos de tela:
TextBox
Id = textBox1
TextBox
Id = textBox2
Button
Id = button1
Text = Obfuscador
Button
Id = button2
Text = DesObfuscar
Referncia: 1.2

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Com o layout pronto e simples de montar, passo para codificao bruta.
Criei uma classe chamada Obfuscator.cs, que ser responsvel em codificar
e decodificar o valor passado pela classe anterior.

using System;
using System.Collections.Generic;
using System.Text;
namespace Obfuscator.Application
{
/// <summary>
/// Contm metodos para obfuscar os valores da registry.
/// </summary>
/// <remarks>
/// </remarks>
internal static class Obfuscator
{
private const byte keyObfuscator = (byte)15;
/// <summary>
/// Obfusca valor especificado.
/// </summary>
/// <param name="valor">Valor convertido para bytes para ser
obfuscado.</param>
/// <returns>Array de bytes obfuscado.</returns>
internal static byte[] ObfuscateValue(byte[] valor)
{
byte[] retorno = new byte[valor.Length];

for (int i = 0; i < valor.Length; i++)


{
retorno[i] = (byte)(valor[i] + Obfuscator.keyObfuscator);

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


}
return retorno;
}
/// <summary>
/// Retorna valor valor limpo para o valor obfuscado especificado.
/// </summary>
/// <param name="valor">Valor Obfuscado.</param>
/// <returns></returns>
internal static byte[] GetClearObfuscatedValue(byte[] valor)
{
byte[] retorno = new byte[valor.Length];
for (int i = 0; i < valor.Length; i++)
{
retorno[i] = (byte)(valor[i] - Obfuscator.keyObfuscator);
}
return retorno;
}
}
}
Referncia: 1.3
Explicao:
O cdigo em si est todo comentado para entendimento.
Criei uma constante chamada KeyObfuscator com (byte) 15, criei dois
mtodos onde uso um para misturar valores e outro para tirar a mistura.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

internal static byte[] ObfuscateValue(byte[] valor)


{
byte[] retorno = new byte[valor.Length];

for (int i = 0; i < valor.Length; i++)


{
retorno[i] = (byte)(valor[i] + Obfuscator.keyObfuscator);
}
return retorno;
}
Referncia: 1.4
Na analise da assinatura do mtodo, coloquei internal e recebe um valor do
tipo byte, ou seja o valor que deve ser mandado todo tipo byte[]. Logo
depois pego a quantidade de caracteres enviados com a linha Length.
Com o prximo passo, fao um for onde pego valor de cada caracter e
somo com o valor de minha constante criada no comeo da classe. No final
retorno os dados. Esse mtodo da referncia 1.4 para misturar os dados
passados.
internal static byte[] GetClearObfuscatedValue(byte[] valor)
{
byte[] retorno = new byte[valor.Length];
for (int i = 0; i < valor.Length; i++)
{
retorno[i] = (byte)(valor[i] - Obfuscator.keyObfuscator);
}
return retorno;

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


}
Referncia: 1.5
O mtodo da referncia 1.5 para quebrar o valor obfuscado e transformar
em valor normal digitado pelo usurio. Fao mesma coisa com esse outro
mtodo, pego a quantidade de caracteres passados, depois fao um for
diminuindo o valor de minha constante. Depois retorno o valor.

Programando Form2

Com os botes e texts do form2 j colocados, sigo o passo de programar e


chamar os valores que quero misturar. Cliquei duas vezes em cima button1
e coloquei o cdigo referncia 1.6.

private void button1_Click(object sender, EventArgs e)


{
string text1 = textBox1.Text.ToUpper();
byte[] bytesValores = this.encoder.GetBytes(text1);
byte[]

aux

Obfuscator.Application.Obfuscator.ObfuscateValue(bytesValores);
resultado = encoder.GetString(aux) ;
textBox2.Text = resultado;
}
Referncia: 1.6
Explicao:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Transformei o valor do TextBox1 para caixa alta atribuindo a uma string
text1.

Criei

uma

transformando

varivel

para

pegar

bytesValores[]
o

resultado

atribuindo
em

Bytes

valor

com

text1
cdigo

this.encorder.GetBytes(text1).
Criei uma varivel com o nome aux, cujo no aconselhvel, pegando o
valor retornado do mtodo ObfuscateValue passando o valor bytesValores;
ou

seja;

chamo

mtodo

criado

anteriormente

passando

valor

transformado em byte. Com o resultado do mesmo, utilizo o enconder para


pegar o GetString passando o valor aux retornado do mtodo misturador.
At o momento no falei nada do encorder, falarei mais a frente.
Seguindo para a programao do button2, dei um duplo clique e digitei a
linha de cdigo referncia 1.7.

private void button2_Click(object sender, EventArgs e)


{
byte[] bytesValores = this.encoder.GetBytes(resultado);
byte[]

obj

Obfuscator.Application.Obfuscator.GetClearObfuscatedValue(bytesValores);
textBox1.Text = encoder.GetString(obj);
}
Referncia: 1.7
Explicao:
Peguei o valor de minha varivel resultado armazenada anteriormente
pegando o GetBytes, depois criei uma outra varivel com o nome obj do
tipo byte[] atribuindo o retorno do mtodo GetClearObsfuscatedValeu, cujo
foi feito anteriormente. Atribui o valor do obj ao meu Text1 pegando o meu
GetString(obj). Simples, fcil e rpido.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


A referncia 1.8 mostra o cdigo o form2.cs todo construdo. Inclusive o
enconder comentado anteriormente est declarado no incio do cdigo.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Encoding encoder = new System.Text.UTF8Encoding();
string resultado = string.Empty;
private void button1_Click(object sender, EventArgs e)
{
string text1 = textBox1.Text.ToUpper();
byte[] bytesValores = this.encoder.GetBytes(text1);
byte[]

aux

Obfuscator.Application.Obfuscator.ObfuscateValue(bytesValores);
resultado = encoder.GetString(aux) ;
textBox2.Text = resultado;
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


private void button2_Click(object sender, EventArgs e)
{
byte[] bytesValores = this.encoder.GetBytes(resultado);
byte[]

obj

Obfuscator.Application.Obfuscator.GetClearObfuscatedValue(bytesValores);
textBox1.Text = encoder.GetString(obj);
}
}
}
Referncia: 1.8

Testando aplicao:

Depois

de

compilar

aplicao,

cliquei

F5

digitei

mauricio@ascompras.com e cliquei no boto OBFUSCADOR. (Referncia


1.9)

Referncia: 1.9
Depois apaguei o valor do text1, (mauricio@ascompras.com) e cliquei no
boto DesObfuscar, o mesmo pegar o valor do text2 e transformar os
dados mostrando no text1. (Referncia 1.10 e 1.11).

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.10

Referncia: 1.11

Fico por aqui e espero ter ajudado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Orientao a Objetos com


Visual Studio.NET 2005 (o famoso OO) parte 1.

Usarei

herana

de

classes,

banco

de

dados

SQL

SERVER,

STORE

PROCEDURE e componente para enviar e-mail.


Em resumo, existe apenas um funcionamento de cadastrar usurios e
enviar e-mail automaticamente para o usurio que foi cadastrado e para
administrador do site ou sistema. Veja a figura 1.1.

Referncia: 1.1
A figura 1.1 mostra as classes e objetos criados dentro do sistema.
Prestando ateno no diagrama existem classes que possui uma seta indo
para outra classe. Explicarei mais a frente porque esse desenho e
funcionamento do diagrama. O mesmo foi criado com o Visual Studio.NET
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


2005 depois de todas as classes criadas. Pode ser criado antes ou depois,
no existe problema algum.
Os nomes das classes criados so de um motivo particular, adotei esse
nome apenas para facilitar o entendimento.
DTO: todo nome de classe que no final estiver DTO so apenas atributos
gets e sets do formulrio da pgina, ou seja, os atributos sero enviados
da camada de apresentao para a DTO.
DAO: todo nome de classe que no final estiver DAO, possuir todo mtodo
responsvel para inserir no banco de dados ou trazer dados. Por exemplo,
usuarioDAO.cs, ter tudo sobre usurio para inserir, deletar ou atualizar
no banco de dados.
Na figura 1.1, mostrado duas setas de classes distintas. Isso quer dizer
que, uma classe herda a outra classe. Quando uma classe herdada de
outra, a mesma recebe todos os atributos e podem ser acessadas
normalmente, ou seja, como se estivesse em mesma classe.
Comeando, mostrarei primeiramente a tabela do banco de dados e a
STORE PROCEDURE que criei e estarei utilizando mais a frente. Veja a
figura 1.2 de referncia.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.2
O banco de dados bem simples e com poucos campos para ser
cadastrados. O nome do banco de dados no importa, podes colocar
qualquer nome, porm o nome da tabela TB_USU_TESTE.
A figura de referncia 1.3 mostra a store procedure criada para inserir
dados no banco de dados.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.3
Pronto, depois do banco de dados e STORE PROCEDURE criada, irei direto
para a criao da classe BancoDados.cs onde possui todo o cdigo para
abrir e fechar o banco de dados.
Clicando com o boto direito, adicione um novo componente com o nome
citado anteriormente e coloque o cdigo abaixo. No posso esquecer de
importar a classe SqlClient para poder conectar no banco de dados.

using System;
using System.Data;
using System.Data.SqlClient;
/// <summary>
/// Classe de banco de dados
/// </summary>
public class BancoDados
{
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


protected SqlConnection sConn = new SqlConnection("Initial
Catalog=BANCO DE DADOS; user id=USUARIO ;password=SENHA; Data
Source=SERVIDOR DE BANCO DE DADOS");
/// <summary>
/// Metodo que conecta no banoc de dados
/// </summary>
#region conecta com o banco de dados
public void Conecta()
{
try
{
if (sConn.State==0)
{
sConn.Open();
}
}
catch(Exception e)
{
throw new Exception("Fora:"+ e.Message);
}
}
#endregion
/// <summary>
/// Metodo que desconecta no banco de dados
/// </summary>
#region desconecta com o banco de dados
public void Desconecta()
{
try
{
//if (sConn.State!=0)
//{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


sConn.Close();
//}
}
catch(Exception e)
{
throw new Exception("Fora:"+ e.Message);
}
}
#endregion
}

Pronto, a classe de banco de dados criada, o prximo passo criar uma


classe que contm os campos do formulrio que ir ser inserida no banco.
Clicando com o boto direito, adicione um novo item ou classe chamada
usuarioDTO.cs.
A figura 1.4 mostra a classe citada.

Referncia: 1.4
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Esta classe possui apenas as variveis com get e set de cada uma.
Veja abaixo todos os atributos criados.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// Classe com atributos do form
/// </summary>
public class usuarioDTO
{
String nome;
String email;
String endereco;
String cep;
public String Email
{
get { return email; }
set { email = value; }
}
public String Endereco
{
get { return endereco; }

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


set { endereco = value; }
}
public String Cep
{
get { return cep; }
set { cep = value; }
}
public String Nome
{
get { return nome; }
set { nome = value; }
}
}

Pronto, depois da classe de atributos criada, irei criar o formulrio, ou seja,


a camada de apresentao para inserir os campos no banco de dados.
Adicionei um novo item chamado Default.aspx, com alguns campos. Veja
a figura 1.5.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.5
Segue abaixo todo cdigo da pagina.

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Nome: &nbsp;<asp:TextBox ID="txtNome"
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


runat="server"></asp:TextBox>
<br />
E-mail: &nbsp;
<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox><br />
Endereo:
<asp:TextBox ID="txtEndereco" runat="server" Height="49px"
TextMode="MultiLine" Width="189px"></asp:TextBox><br />
&nbsp;CEP: &nbsp;
<asp:TextBox ID="txtCEP" runat="server"></asp:TextBox><br />
&nbsp; &nbsp;
<br />
&nbsp; &nbsp;
<asp:Button ID="cmbGravar" runat="server" Text="Gravar"
OnClick="cmbGravar_Click" /></div>
</form>
</body>
</html>

Veja a relao:

Nome: txtNome
E-mail: txtEmail
Endereo: txtEndereco
Cep: txtCEP
Boto Gravar: cmdGravar

A figura 1.6 mostra como ficar a pgina que acabou de ser criada.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.6
No ligue para o layout por enquanto, estou focando diretamente para a OO
(Orientao a Objetos) e o funcionamento. Espero que at aqui esteja ainda
tudo claro para voc leitor.
Clicando com o boto direito no mouse em cima do projeto, adicionei um
nome componente, chamado usuarioDAO.cs. Essa classe responsvel
para inserir os valores dentro do banco de dados, ou seja, a camada de
negcio do sistema.
A figura 1.7 mostra a classe citada anteriormente criada.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Referncia: 1.7
Veja o cdigo da classe usuarioDAO.cs.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;

/// <summary>
/// classe que insere usuario no banco de dados, chama de DAO
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


/// </summary>
public class usuarioDAO : BancoDados
{
/// <summary>
/// insere usuario no banco de dados
/// </summary>
/// <param name="usuario"></param>
public Boolean insereUsuarioDAO(usuarioDTO usuario)
{
try
{
getConection();
insereUsuarioNoBanco(usuario);
return true;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
/// <summary>
/// metodo para inserir usuario no banco de dados
/// </summary>
/// <param name="usuario"></param>
private Boolean insereUsuarioNoBanco(usuarioDTO usuario)
{
try
{
SqlCommand sqlc = new
SqlCommand("SP001_INSERE_USUARIO_TESTE", sConn);
sqlc.CommandType = CommandType.StoredProcedure;
atribuirValores(usuario, sqlc);
sqlc.ExecuteNonQuery();

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


return true;
}
catch (SqlException e)
{
throw new Exception(e.Message);
}
finally
{
getConectionOut();
}
}
/// <summary>
/// atribuir valores vindo do objeto
/// </summary>
/// <param name="usuario"></param>
/// <param name="sqlc"></param>
private static void atribuirValores(usuarioDTO usuario, SqlCommand
sqlc)
{
sqlc.Parameters.AddWithValue("@NO_USU", usuario.Nome);
sqlc.Parameters.AddWithValue("@EMAIL_USU",
usuario.Email);
sqlc.Parameters.AddWithValue("@END_USU",
usuario.Endereco);
sqlc.Parameters.AddWithValue("@CEP_USU", usuario.Cep);
}
/// <summary>
/// metodo que conecta no banco de dados;
/// </summary>
public void getConection()
{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Conecta();
}
/// <summary>
/// metodo que desconecta do banco de dados
/// </summary>
public void getConectionOut()
{
Desconecta();
}
}

Explicando o cdigo acima:


Primeiramente irei analisar a assinatura da classe.
public class usuarioDAO : BancoDados

Se voc estiver pensando, que coisa estranha esse dois pontos. No


estranho, normal, essa classe est herdando atributos da classe
BancoDados. Estou usando uma parte da orientao a objetos chamada
herana, ou seja, tudo que estiver em outra classe poder ser usada na
classe usuarioDAO.
O mtodo principal dessa classe o seguinte:

/// <summary>
/// insere usuario no banco de dados
/// </summary>
/// <param name="usuario"></param>
public Boolean insereUsuarioDAO(usuarioDTO usuario)
{

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


try
{
getConection();
insereUsuarioNoBanco(usuario);
return true;
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}

bem pequeno esse mtodo, porm dentro do bloco try, utilizado vrios
mtodos dessa mesma classe. Analisando a assinatura do mtodo, vejo que
um mtodo pblico, retorna um tipo de objeto Boolean, ou seja, true ou
false e recebe um objeto chamado usuarioDTO como parmetro. Se no
ests entendendo, calma que est chegando a hora certa para entender.
Dentro da classe e do bloco try chamado um mtodo getConection().

/// <summary>
/// metodo que conecta no banco de dados;
/// </summary>
public void getConection()
{
Conecta();
}

Esse mtodo cima apenas para conectar ao banco de dados. Veja que o
mesmo

est

chamando

um

outro

mtodo

de

dentro

da

classe

BancoDados.cs. No esquea que o mesmo est sendo herdado de outra


classe.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


O prximo mtodo chamado o insereUsuarioNoBanco(usuario);
passando o parmetro usurio como parmetro.

/// <summary>
/// metodo para inserir usuario no banco de dados
/// </summary>
/// <param name="usuario"></param>
private Boolean insereUsuarioNoBanco(usuarioDTO usuario)
{
try
{
SqlCommand sqlc = new
SqlCommand("SP001_INSERE_USUARIO_TESTE", sConn);
sqlc.CommandType = CommandType.StoredProcedure;
atribuirValores(usuario, sqlc);
sqlc.ExecuteNonQuery();
return true;
}
catch (SqlException e)
{
throw new Exception(e.Message);
}
finally
{
getConectionOut();
}
}

Para quem experiente com .NET, pode perceber que separei todos os
mtodos de uma classe em partes pequenas para serem melhores
gerenciados e para melhor manuteno. Separando dessa forma, poderei

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


mudar qualquer mtodo sem que um dependa do outro, ou seja, fica a
independncia de cdigo ou de mtodos.
Esse mtodo insereUsuarioNoBanco(usuarioDTO usurio) mostra que
est sendo usado uma STORE PROCEDURE como sql. O tipo de comando
StoreProcedure. A prxima linha, veja que um mtodo tambm criado
chamado atribuirValores(usuario, sqlc). Esse mtodo apenas para
adicionar os valores passados dentro do comando para ser executado.
Veja o mtodo atribuirValores.

/// <summary>
/// atribuir valores vindo do objeto
/// </summary>
/// <param name="usuario"></param>
/// <param name="sqlc"></param>
private static void atribuirValores(usuarioDTO usuario, SqlCommand
sqlc)
{
sqlc.Parameters.AddWithValue("@NO_USU", usuario.Nome);
sqlc.Parameters.AddWithValue("@EMAIL_USU",
usuario.Email);
sqlc.Parameters.AddWithValue("@END_USU",
usuario.Endereco);
sqlc.Parameters.AddWithValue("@CEP_USU", usuario.Cep);
}

Esse mtodo receber o objeto usuarioDTO e o SqlCommand apenas para


adicionar como PARAMETERS de um sql. Continuando, a prxima linha do
mtodo insereUsuarioNoBanco apenas executa o sqlc, fazendo assim
uma insero no banco de dados dos valores passados.
Dentro do bloco finally, estou usando um outro mtodo criado para fechar a
conexo com o banco de dados.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

/// <summary>
/// metodo que desconecta do banco de dados
/// </summary>
public void getConectionOut()
{
Desconecta();
}

At agora no vimos como esse parmetro vai ser passado n, irei mostrar
agora.
Esses valores iro ser passados da camada de apresentao.
Abra o arquivo default.aspx e clique duas vezes no boto GRAVAR.
O cdigo abaixo mostrar como ficar o cdigo.

protected void cmbGravar_Click(object sender, EventArgs e)


{
usuarioDAO dao = new usuarioDAO();
usuarioDTO dto = new usuarioDTO();
setValores(dto);
if (dao.insereUsuarioDAO(dto))
{
Response.Redirect("resultadoFinal.aspx");
}
else
{
Response.Redirect("resultadoFinalErro.asp");
}
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Explicando o cdigo acima:


As duas primeiras linhas; estou apenas instanciando as duas classes e
colocando uma varivel para cada uma. Uma chamada dao e outra dto.
Logo depois criei um mtodo chamado setValores(dto) passando a dto como
parmetro. Veja o cdigo abaixo:

/// <summary>
/// metodo para atribuir valores
/// </summary>
/// <param name="dto">objeto dto</param>
private void setValores(usuarioDTO dto)
{
dto.Nome = txtNome.Text;
dto.Endereco = txtEndereco.Text;
dto.Email = txtEmail.Text;
dto.Cep = txtCEP.Text;
}

Esse mtodo apenas seta os valores dos textBox para dentro da dto.
Continuando com o cdigo segue as linhas abaixo.

if (dao.insereUsuarioDAO(dto))
{
Response.Redirect("resultadoFinal.aspx");
}
else
{
Response.Redirect("resultadoFinalErro.asp");
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Colocando

varivel

criada

seguindo

do

(ponto),

escolho

insereUsuarioDAO passando a dto preenchida. Dessa forma, todos os


valores sero passados para a classe.
Clicando F5 para iniciar o sistema veja como os dados sero inseridos no
banco de dados. Veja a figura 1.8.

Referncia: 1.8
Preencha os campos e clique gravar. Logo depois podes olhar diretamente
no banco de dados se os mesmos foram inseridos. Se quiser, podes colocar
um break para ir seguindo em cada mtodo.
No mostrarei esses passos para no ficar maior ainda.
Depois de preencher os dados e clicar no boto, dando tudo certo, o
sistema redirecionar para a pgina de sucesso. Criei duas pginas s para
mostrar que foi inserido com sucesso ou se deu erro, ir para outra pgina.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


O

nome

das

duas

pginas

resultadoFinal.aspx

resultadoFinalErro.aspx.
Veja a figura 1.9.

Referncia: 1.9
No termina aqui. O passo dois; mostrarei como depois de cadastrar os
dados passar e-mail para o usurio cadastrado e para o administrador do
sistema,

isso

tudo

automaticamente.

No

final

da

parte

2,

estarei

disponibilizando o cdigo fonte do sistema criado.


Espero que tenha gostado, qualquer duvida s mandar e-mail para:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Resources e Internacionalizao usando Visual Studio.NET


2005 (Parte I)
Esttou aqui para explicar um pouco sobre a nova maneira de resources e
internacionalizao com o Visual Studio.NET 2005. Est mais simples e
robusta a forma de colocar vrias lnguas dentro do seu sistema web.
Colocarei vrios exemplos utilizando trs linguagens diferentes como:
ingls, portugus e espanhol. Usarei a linguagem C#.NET.
Segue a agenda:

Antes de comear na prtica, segue uma frase interessante para todos


usando

uma

criptografia

dos

tempos

antigos.

Tente

traduzir.

Irei

disponibilizar a frase traduzida. Em breve, ter uma promoo para quem


traduzir as frases e mandar um e-mail, ganhar um livro, mas apenas nas
prximas frases e artigos publicados no aspneti.com.

Mbp dpouf b Efvt p ubnboip ept tfvt qspcmfnbt, dpouf bpt tfvt
qspcmfnbt p ubnboip ep tfv Efvt. Bcsbdpt b upept.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Indo para prtica

Comecei ante de tudo instalando a ferramenta grtis Visual Studio.NET


Express 2005. O link que onde ser feito download da ferramente free da
Microsoft : http://msdn.microsoft.com/vstudio/express/

Depois de instalado, criei um projeto chamado mauriciojunior.org, pode ser


escolhido o nome que quiser o que importa o contedo e a forma de
fazer. A primeira tela do projeto apenas uma amostra de como est todo
o projeto dentro da ferramenta.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Dentro da pgina default.aspx criei um label chamado lbl, ou seja, com o


ID lbl pronto para ser usado da forma que quiser. O exemplo simples e
comeando do zero mesmo.
Depois disso, cliquei com o boto direito em cima do projeto e fui direto
opo ADD NEW ITEM ...

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Abriu uma prxima tela onde a escolha do tipo do arquivo ser RESOURCE
FILE com o nome MyStrings.resx. No Visual Studio.NET 2005 esse xml
editado bem melhor do que na forma do 2003, na realidade um xml
dentro do seu projeto.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Quando clicar no boto ADD, a ferramenta pergunta se pode adicionar o


resource file dentro da pasta App_GlobalResources, cliquei na boto SIM do
alerta do sistema. Continuando com o projeto, adicionei apenas uma opo
chamada PRINCIPAL com o valor MEU VALOR PRINCIPAL.

Segue o que acabei de descrever acima.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Agora dentro da classe default.aspx.cs, colocarei o meu label recebendo


esse valor para mostrar na tela.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cdigo:

using System;
using System.Data;
using System.Configuration;
using System.Globalization;
using System.Threading;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

public partial class _Default : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
lbl.Text = Resources.MyStrings.PRINCIPAL;
}
}

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Resources e Internacionalizao usando Visual Studio.NET


2005 (Parte II)
A parte II, falo e mostro com exemplos funcionais e ilustrativos a primeira
forma de passar uma aplicao para ficar em multi-idiomas, isto , ingls e
portugus. Deixo claro que uma continuao, portanto, verifique
primeiramente a parte I para depois verificar a parte II.

Uso o mesmo exemplo que foi utilizado na parte I criado no dia


13/12/2005. Mostra um sistema que j verifica qual a linguagem da
mquina do usurio e j escolhe qual arquivo .resx utilizar na aplicao.
de simples entendimento e ainda ficou mais fcil desenvolver com a
ferramenta Visual Studio.NET 2005.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Antes de comear efetivamente, criei outra frase criptografada para voc


leitor, verificar e descriptografar. No final da trilogia sobre Resources e
Internacionalizao, ter um prmio para quem descobrir as frases
criptografadas. A dica : utilizo criptografia dos tempos antigos.
Frase criptografada:
N Uhrtzj Rstchn.MDS ehbnt zhmcz ldjgnq bnl z udqrzn 1994, drstchn
oqz uzjdq.

Anteriormente, criei um arquivo.resx chamado MyString.resx, agora criei


mais um arquivo chamado MyString.en.resx. Da mesma forma que foi feito
o arquivo MyString.resx, deve ser feito o MyString.en.resx. Para no tem
muito re-trabalho, acabei copiando o mesmo e colocando no mesmo
diretrio usando a ferramenta, depois apenas renomeei o arquivo para
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


MyString.en.resx. Deixo claro que no bom nem aconselhvel fazer isso
dessa forma. Antes de desenvolver os arquivos, sempre falo que no existe
mgica em relao programao, ou seja, no tem como o programa
desenvolver uma traduo automtica para traduzir o seu sistema ou site. A
no ser que seja feito um framework todo especializado para isso.
Acrescentei algumas chaves e valores dentro do arquivo MyString.resx.

Chave

Valor

MEUPC

MEU COMPUTADOR

PRINCIPAL

MEU VALOR

SEUPC

SEU COMPUTADOR

O arquivo MyString.en.resx, coloquei os mesmos nomes porm com


outros valores.

Chave

Valor

MEUPC

MY COMPUTER

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


PRINCIPAL

MY VALUE

SEUPC

YOUR PC

Depois de configurar os arquivos da forma que desejei, dentro da classe


default.aspx.cs criei dois labels onde poderei mostrar os valores conforme
configurei anteriormente.

meu pc: <asp:Label ID="lblmeupc" runat="server"></asp:Label>


seu pc: <asp:Label ID="lblseupc" runat="server"></asp:Label>

Segue o cdigo fonte da pgina default.aspx:

<%@ Page Language="C#" Culture="auto" UICulture="auto"


AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default"
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ Register Src="~/include/menu.ascx" TagPrefix="Prefixo"
TagName="menu" %>
<%@ Register Src="~/include/topo.ascx" TagPrefix="Prefixo"
TagName="topo" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<Prefixo:topo ID="topo" runat=server />
<body topmargin="0" leftmargin="0">
<form id="form1" runat="server">
<table width=100% border=1>
<tr>
<td valign=top width="190">
<Prefixo:menu ID="menu" runat=server />
</td>
<td valign=top>
meu pc: <asp:Label ID="lblmeupc"
runat="server"></asp:Label>
<br /><br />
seu pc: <asp:Label ID="lblseupc"
runat="server"></asp:Label>
</td>
</tr>
</form>
</body>
</html>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Note no cdigo da pgina quatro pequenas palavras na primeira linha da
pgina:
Culture="auto"

UICulture="auto",

dessa

forma

coloco

pgina

pegando a cultura do cliente, ou seja, do browser.


Agora,

dentro

do

cdigo

da

classe

digitei

apenas

duas

linhas

de

programao para mostrar ao usurio o que defini nos arquivos .resx.


lblmeupc.Text = Resources.MyStrings.MEUPC;
lblseupc.Text = Resources.MyStrings.SEUPC;
No assuste, so apenas essas duas linhas de cdigo mesmo. Clique F5 e
irei esperar o resultado. No meu cliente, est configurado para a linguagem
principal PORTUGUS. Segue o resultado:

Veja que o mesmo funcionou perfeitamente. Estando em portugus, o


mesmo pegou os valores do meu arquivo MyString.resx. Preciso definir no
meu cliente outra lngua, ou seja, ingls. Siga os passos:
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Abra o Internet Explorer, depois menu ferramentas e depois opes da


Internet....

Apareceu uma tela de configuraes, existe um boto chamado IDIOMAS.


Cliquei no mesmo e apareceu outra tela.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Defini apenas que a lngua INGLS (ESTADOS UNIDOS) [en-us] seja a


primeira do meu cliente. Segue a ilustrao:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Com isso, apenas simulei que o meu cliente ingls e no portugus, ou
seja, imagine que um usurio dos Estados Unidos da Amrica esteja
entrando em seu sistema ou site. Clicando apenas em refresh da pgina
aberta, note que as descries foram mudadas para a outra lngua.

O prximo da srie, mostrarei como fcil mudar tanto para ingls,


portugus ou espanhol dentro do seu sistema ou site apenas clicando nos
links: INGLES, PORTGUES, ESPANHOL, com algumas opes mais
avanadas.
Espero ter ajudado a todos. Qualquer dvida, pode entrar em contato, ser
um prazer.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Trabalhando com Cookie usando Visual Studio.NET 2005 (parte


I)

Irei desenvolver para ajudar a todos como trabalhar com cookie usando a
IDE da Microsoft Visual Studio.NET 2005. Para no deixar voc sem saber o
que cookie ou pra que serve isso, fui a um tradutor ingls / portugus e
digitei:
- cookie = biscoito, bolinho, doce, bolacha; bloco de dados que um servidor
(ou site na Internet) armazena no disco rgido do usurio com fins de
identificao e pesquisa (usado para a promoo de vendas e servios na
Internet).
Resumindo, armazena algumas informaes de uma pessoa ou usurio em
disco rgido do seu computador para identificar, pesquisar ou qualquer outra
coisa que precise dos dados do cliente. Anteriormente, expliquei sobre
session, como armazenar e ler uma session via sistema. O problema da
session, que todos os dados estaro ativos apenas quando o cliente
estiver aberto, ou seja, o IE ou outros quando se fala de web. WindowForm
ainda no foi abordado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Essa ferramenta criada pela Microsoft bastante poderosa e rpida para


desenvolver um aplicativo web, window ou mobile, vale a pena.
Irei mostrar como criar um cookie com dados digitados pelo usurio pelo
formulrio web, uma seqncia. Mostrarei como ler do arquivo os dados
informados dentro do disco local do usurio.
Antes de tudo, criei um projeto web chamado website1 com uma pgina
que possui um formulrio e uma classe.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Segue os dados da pgina:


TextBox
Id = txtNome
TextBox
Id = txtEmail
Button
Id = cmdCriar
Text = Criar Cookie

Para ficar melhor ainda, o cdigo fonte da pgina est disposto logo em
seguida:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Gerando cookie</title>
</head>
<body>
<form id="formCookie" runat="server">
<div>
<h3>Gerando cookie com VS 2005.</h3>
Nome: <asp:TextBox ID="txtNome"
runat="server"></asp:TextBox> <br />
E-mail: <asp:TextBox ID="txtEmail"
runat="server"></asp:TextBox>
<br /><br />
<asp:Button ID="cmdCriar" Text="Criar Cookie" runat="server"
OnClick="cmdCriar_Click" />
<br /><br />
</div>
</form>
</body>
</html>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Dentro

da

classe

.cs

agora,

criei

um

mtodo

protected

chamado

CriarCookie, passando dois valores; nome e email.

Cdigo fonte:

/// <summary>
/// Mtodo que cria o cookie do seu sistema
/// </summary>
/// <param name="nome">nome qualquer</param>
/// <param name="email">email qualquer</param>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


protected void CriarCookie(string nome, string email)
{
//criando cookie
//esse nome website1 pode ser qualquer nome que quiser, porm,
// necessrio um nome
HttpCookie cookie = new HttpCookie("website1");
//cria cookie com o ip da maquina
cookie.Values.Add("IP", Request.UserHostAddress.ToString());
cookie.Values.Add("NOME", nome);
cookie.Values.Add("EMAIL", email);
//colocando o cookie para expirar daki um dia
cookie.Expires = DateTime.Now.AddDays(1);
Response.AppendCookie(cookie);
}

Explicando cdigo:

HttpCookie cookie = new HttpCookie("website1");

Esta linha cria o cookie dentro do computador de um usurio. Esse nome


website1, foi escolhido por mim, ou seja, pode colocar qualquer nome
dentro desses parnteses, o que quiser colocar.

//cria cookie com o ip da maquina


cookie.Values.Add("IP", Request.UserHostAddress.ToString());

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


cookie.Values.Add("NOME", nome);
cookie.Values.Add("EMAIL", email);

Estas trs linhas apenas adicionam valores dentro do arquivo do cookie.


Existe um nome e valor, por exemplo: dentro do meu cookie ter um nome
chamado

NOME

(em

NOME=MAURICIOJUNIOR,

maisculo)

da

forma

mesma

ao

valor
ter

um

que
valor

adicionei.
para

EMAIL=MAURICIO@ASPNETI.COM.

//colocando o cookie para expirar daki um dia


cookie.Expires = DateTime.Now.AddDays(1);
Response.AppendCookie(cookie);

A linha EXPIRES significa apenas que esse cookie ir expirar no prximo dia,
ou seja, fiz a soma do dia de hoje mais um. O comando APPENDCOOKIE
apenas gera o cookie, ou seja, efetivamente gera o cookie dentro do pc em
uma pasta meio escondida.
O prximo mtodo o do boto.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cdigo fonte:

protected void cmdCriar_Click(object sender, EventArgs e)


{
CriarCookie(txtNome.Text, txtEmail.Text);
}

Nesse mtodo, chamo o outro mtodo para criar o cookie passando os


valores. As prximas figuras mostram o funcionamento da aplicao.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cliquei no boto gerar cookie, veja a figura com o resultado.


Acessei a pasta e l est o cookie gerado com os dados dentro.

Espero que tenha gostado e aprendido muito como eu aprendi.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Trabalhando com Cookie (parte II)

Nessa segunda parte, mostrarei como ler o arquivo que foi gerado pela
aplicao e como mostrar o mesmo na tela. Para voc que ainda no sabe
direito como fazer, no tenha medo. mais fcil do que tirar doce de
criana como diz o ditado.

Requisitos:

Tipo de projeto: Web


Ferramenta

de

desenvolvimento:

IDE

Microsoft

chamada

Visual

Studio.NET 2005.
Pessoa: Apenas disposio em seguir os passos.

No

posso

deixar

de

falar

sobre

essa

grande

ferramenta

de

desenvolvimento que o Visual Studio.NET 2005. Veio para revolucionar o


mercado com a IDE de desenvolvimento. Para melhorar, a Microsoft criou
uma ferramenta FREE para desenvolver com facilidade e pode ser baixada
pela internet gratuitamente.
Segue o link: http://msdn.microsoft.com/vstudio/express/
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Para lembrar a primeira tela da parte I, segue uma imagem onde


acrescentei um link que chama outra pgina.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Esse link Ler cookie gerado chama uma pgina chamada lerCookie.aspx.
No decorrer, mostrarei a especificao da mesma. No revisarei a parte I de
como criar o cookie e tudo mais, qualquer coisa, existe um link acima que
indica onde pode ser encontrado para leitura e conhecimento.

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Gerando cookie</title>
</head>
<body>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<form id="formCookie" runat="server">
<div>
<h3>Gerando cookie com VS 2005.</h3>
Nome: <asp:TextBox ID="txtNome"
runat="server"></asp:TextBox> <br />
E-mail: <asp:TextBox ID="txtEmail"
runat="server"></asp:TextBox>
<br /><br />
<asp:Button ID="cmdCriar" Text="Criar Cookie" runat="server"
OnClick="cmdCriar_Click" />
<br /><br />
<a href="lerCookie.aspx">Ler cookie gerado</a>
</div>
</form>
</body>
</html>

A nica coisa que acrescentei foi linha de cor verde com o <a href... .
Passei para a pgina lerCookie.aspx que bem simples e fcil o
desenvolvimento e entendimento.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Especificao da pgina:

Label
Id = lblNome
Label
Id = lblEmail

Cdigo fonte:

<%@ Page Language="C#" AutoEventWireup="true"


CodeFile="lerCookie.aspx.cs" Inherits="lerCookie" %>

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Lendo cookie</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="lblNome" runat="server"></asp:Label><br />
<asp:Label ID="lblEmail" runat="server"></asp:Label>
</div>
</form>
</body>
</html>

Passei para o cdigo .CS da classe, mostro apenas como pegar o cookie que
gerei e como mostrar na tela.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cdigo fonte:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class lerCookie : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


{
LerCookieGerado();
}
private void LerCookieGerado()
{
lblNome.Text = Request.Cookies["website1"]["NOME"].ToString();
lblEmail.Text = Request.Cookies["website1"]["EMAIL"].ToString();
}
}

Explicao:
Note que criei um mtodo chamado LerCookieGerado() do tipo privado e
sem retorno de valor. Dentro do mesmo mostro perfeitamente como pegar
o valor. O cdigo Request.Cookies["website1"]["NOME"] significa: na
primeira chave o nome do seu cookie, ou seja, website1. Na segunda
chave o valor que foi atribudo dentro do arquivo.
Funcionamento.
Gerei o cookie.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cliquei no link ler cookie gerado.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


Para testar verdadeiramente o cookie, fechei o browser e abrir novamente
no meu endereo de servidor:
http://localhost:2810/WebSite1/lerCookie.aspx

Note que o mesmo est com as informaes da mesma forma.


Dica:
Para quem for gerar cookie com informaes especiais ou senhas e
tudo mais, melhor gerar usando algum tipo de criptografia onde o
usurio

no

saber

que

informao

pode

ser.

Usando

criptografia, fica melhor a segurana dos dados e informaes de


clientes.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Armazenando dados no ViewState Parte I

Segue alguns livros que publiquei pela editora Cincia Moderna.

Para quem no sabe o que ViewState, ir clarear um pouco no seu


desenvolvimento. Antes do comeo, segue os pr-requisitos para o
desenvolvimento:
- Visual Studio.NET 2005;
- Linguagem C#.NET;
- Conhecimento com envio de dados.
A IDE desenvolvida pela Microsoft chamada Visual Studio.NET 2005 veio
para revolucionar o mercado em desenvolvimento de software. Para quem
no adquiriu ainda, segue link para download gratuitamente. A verso
express gratuita e baseada para estudantes, desenvolvedores que esto
comeando e outros. Vale a pena conferir.

Alm da verso Visual Studio.NET 2005 Express Editions, est disponvel a


verso do Express banco de dados SQL SERVER 2005.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Link: http://msdn.microsoft.com/vstudio/express/default.aspx

Seguindo, cliquei no menu HELP, depois em ABOUT MICROSOFT VISUAL


STUDIO. A IDE mostra a ilustrao a seguir:

Como dito antes, mostrarei como armazenar os dados OOP (programao


orientado a objetos) no campo ViewState. Percebo que quando executo
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


uma pgina ASP.NET existe um campo oculto no meu cdigo HTML com o
nome _ViewState, o mesmo gerado com dados e objetos do formulrio
WEB, basicamente uma lista de nomes e valores que so salvos depois
que a pgina da um postback, ou postada.
O _ViewState armazena todos os dados da pgina ocultamente do HTML,
porm existe algumas limitaes, o mesmo s pode armazenar os dados
que so serializados, ou seja, SERIALIZABLE. O ASP.NET compara o
estado de um controle com o seu estado anterior.

Indo para a prtica

Na execuo dessa primeira pgina, segue a ilustrao de como


armazenado. No desenvolvi nenhuma linha de cdigo e o ViewState j est
l.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Notei e note voc tambm que os dados so criptografados, portanto existe


segurana de dados dentro desse campo _ViewState.
Criei

uma

outra

classe

chamada

UsuarioTO.cs

com

alguns

dados

declarados do tipo string.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Segue o cdigo:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


using System.Web.UI.HtmlControls;
/// <summary>
/// Classe com campos de usurios
/// </summary>
[Serializable]
public class UsuarioTO
{
string usuario;
string senha;
string dataNascimento;
string email;
public string Email
{
get { return email; }
set { email = value; }
}
public string DataNascimento
{
get { return dataNascimento; }
set { dataNascimento = value; }
}
public string Senha
{
get { return senha; }
set { senha = value; }
}
public string Usuario
{
get { return usuario; }

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


set { usuario = value; }
}
}

Explicao:
O primeiro de tudo, coloquei a classe do tipo SERIALIZABLE antes da
assinatura. Declare as variveis necessrias como usuario, senha,
dataNascimento e email, depois gerei GET e SET das mesmas. Se voc
ainda no sabe como gerar GET e SET automaticamente com a ferramenta
VS 2005, acesse link abaixo que mostrar como gerar.
http://www.aspneti.com/visualizar/downloadArtigo.aspx?ch_artigos=41
Depois

de

gerar

classe

serializada,

criei

uma

pgina

chamada

Default.aspx onde possui um mtodo que armazena os dados dentro do


viewstate usando a classe UsuarioTO.cs.
Segue a ilustrao da classe:

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Cdigo:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


//declarando variavel para ser usada no viewstate
private const string KEY_VIEW_STATE = "__NomeValor";
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// mtodo que armazena os valores dentro do view state
/// </summary>
protected void ArmazenaDados()
{
UsuarioTO to = new UsuarioTO();
to.Usuario = "Mauricio Junior";
to.Senha = "Senha";
to.DataNascimento = "29/07/1982";
to.Email = "mauricio@ascompras.com";
ViewState.Add(KEY_VIEW_STATE, to);
}
}

Explicao:
Criei

uma

constante

chamada

KEY_VIEW_STATE

com

valor

__NomeValor. Essa varivel o nome de dentro do ViewState. Mais


abaixo existe um mtodo que criei chamado ArmazenaDados() onde
instancio

mtodo

da

classe

UsuarioTO.

Armazeno

os

valores

manualmente por exemplo: to.Usuario = Mauricio Junior. A ltima


linha armazeno propriamente os dados e os valores dentro do ViewState.
ViewState.Add(KEY_VIEW_STATE, to).

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


No posso esquecer de coloca o mtodo ArmazenaDados() dentro do
mtodo Load.

protected void Page_Load(object sender, EventArgs e)


{
ArmazenaDados();
}

Executei o cdigo e o mesmo gerou os valores armazenando dentro do


ViewState. Note que os valores realmente aumentaram.

Por enquanto fica por aqui. Estou disposio de todos. Mostrarei como
pegar os dados criptografados e exibir na tela usando OOP.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Armazenando Dados no ViewState Parte II

Mostro como pegar os dados do viewstate. A primeira parte foi falado


anteriormente.

Armazenando os dados dentro do ViewState, os tornam mais seguros e


dinmicos porque so criptografados de uma maneira bem segura. Na
primeira parte, mostro como colocar os dados dentro do campo escondido
chamado ViewState.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Visual Studio.NET 2005

Essa grande ferramenta para desenvolvimento tem ajudado a muitos e


ainda ajudar mais e mais. Existem algumas coisas que precisam ser
mudadas como: fechar a chave automaticamente depois de aberta, colocar
comentrios automaticamente na gerao de GET e SET e gerar os mesmos
mantendo as declaraes no topo da classe. Falo isso porque quando gero
GET e SET, as declaraes das variveis so ficam bagunadas no meio da
classe, outra no comeo e outra no fim.

Direto para a prtica

Lembrando o que foi feito antes, gerei uma classe DTO com GETs e SETs,
adicionei os dados dentro da classe e dentro do ViewState. Agora para
pegar os dados, necessrio apenas uma linha de cdigo.
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Adicionei os dados e valores dentro do ViewState, apenas nome e valor.

Llinha de como pegar os dados do ViewStates adicionados anteriormente. A


dto ainda est nula, porque ainda no passei totalmente na linha.

Passando pela linha, o valor est l.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005

Veja o tamanho do campo __VIEWSTATE.

<input

type="hidden"

name="__VIEWSTATE"

id="__VIEWSTATE"

value="PV24jR7cu/lFMzlD4iBou7AyHy3WiVUGeFPR5Q6HIIlTMAqL+1nbR0hYj
pZkGnvZ8yvBXcn9Y5WOrGMYtKiM6kCkcD5ZqeUjc5WrhUZ4Jun1bMlaLU9keb
ACFDDyu67CkdrMxoasWGRDQDMBdpW4AtV/0+PWPplnrxZyfeBcQtoAdu812
YdwW0WZuQclWPU7kWcwv4GWfI2zPT7JvwyluJbmEbMJOTL7kCk0kZuGRd29
e4f487qNWX70SkQ/K/oZ5lsLdIUfOKItKH6DbIj3dVRL11qA/pbizX83ncP63sfgr
H333SIVvIogEjm42ukXlF+jlORs4zBm2Bj0GZxdkZTrUKblvo5+O7i+hsAH/Klg
nyb4MBP39kf5WGV6NdHnsyZ3pOUKbz/pOo9s9mIsyyIj1IarloFTz04XYt5dq+
X5z8ctPdzh8MkQcmxTNGOw4roLgg2ORMTrBpxcseNJ0+iFzpJ6P99SIpTkZXy3
wBT5k2FJHwVWDqemYjNHwdC57d4ZDKAghxnTkMv+4snwBig1Y9ujbTS/0fr6
ATipq1gs70A8YFZLzacaMxGMCuyTf50vovrKrxsJ965wXHleMGXtfoPN9a2NK13
tIt2k4C8LofGrrCej008Mp2rdBs5ndDmhyibMs7zU/mTgFRx4NZ31xbJU4UXzx7
URfHrg/FiNPnuSceIIMuX0PTahhyDOADWxuCa4qqFkJdaxQBEpAuXpGwJZmn
P2UMMlOu8wD+FRudw2Pik5dkO5Ow/z5ptGSAI9TnXAL0jDzpyoaDL5wIZQbe
Ks6tI35l8aaGn6SqLdo2UyiIZ+emmhulqcb3+yViLSoTKp5mhSOHFZ3OmG/6
UofjOq1oRp0++QbkouwLKMTLRpFeROkcXWYG4YASk1U73+eUR/yZxfCAfzml
B1QBfChQn6fVR2TkU0OIZGxnoIbtyzI35qITNJcq5Nmw0/V/j0mW5vGhZqVaT
R9Y9+zIigLmHiQncwUbvcE/IT49uWWu8AALDfVRw6tTXbWpQAi/Aq3M0l254
NhKS31SzuZZI2N8iFZrlz98w7GeRpAh8rA3BNpHe6Z5KbIMXSa9RzkJXaJ6t5r
wgtDB1hH0b9a+D44rBmzeqLndAqcfb9XkAEvbX0HhN1SD3Xtv/Nw1Jdrl1jE7
Este material no pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org

Curso Prtico Visual Studio.NET 2005


OAirY/qJnSRkLJQ/jC6T+lesfYz/E6sBEhu1F5tA5KX3pFHyBXeZSlSAjFSS/tHl28
E1osR7NgkTuM9jer94T9xhmgU2oMfxMIdpIubmF6PW5CpzUKahaSBQeAYHH
TRUy3hGOCz6vjKGcGqoe7JTDu6kjUmbyCqSdnQrKM/BvZt3UgaXRyLb7PeIpB
QAdR6w+eE+Mj2gMjjQteVsqLgcvRLB/5t6uIrxIPSnqvECxFdIx/TU6aOBnFBfc
kSrnHNh3p4GuuYtf6Fzg7vQfN9oNLtdCfXknu7jhFpyTDkMNhulj5Mu1UCKVhN
QGDkteiI1+dL1tYJCe1v6w+C0ioREbYTlJJosQlshtl9C4psL7gS5WSVH4zmnxz5
oEteuWTUK3GbwbHSDx76p94V4B/F9J2gViGasZwh98bcjKh//hRjudIh4IMYal
kttcYHojjPRcXJm8iOjWpPgR12A==" />

Bom, fico por aqui. Espero ter ajudado a todos. Qualquer coisa pode entrar
em contato.

Este material no pode ser usado em treinamentos e em sala de aula.


http://www.mauriciojunior.org

Você também pode gostar