Este documento descreve um curso prático sobre Visual Studio .NET 2005. Ele contém instruções passo a passo para criar um RSS XML para compartilhar conteúdo da web usando o formato XML. O documento também fornece detalhes sobre como conectar e desconectar de um banco de dados MySQL e como gerar automaticamente um XML com dados do banco de dados.
Orientações para implementação na rede colaborativa de aprendizagem do uca
Curso prático de visual studio net 2005
1. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Curso Prático de
Visual Studio.NET 2005
Autor: Maurício Júnior
www.mauriciojunior.org
www.aspneti.com
E-mail: mauricio@ascompras.com
mauricio@aspneti.com
2. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Nota sobre direitos autorais:
Este e-book é de autoria de Mauricio Junior, sendo comercializado
diretamente através do site shop.linhadecodigo.com.br ou através do site
de Comércio Eletrônico: www.ascompras.com.br / www.ascompras.com ,
mediante contato através do email: mauricio@ascompras.com ou através
do site www.aspneti.com.br e www.mauriciojunior.org , mediante ao e-mail
mauricio@aspneti.com.br, diretamente pelo autor. Nenhum outro
usuário/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 cópias desejar. É vetada a distribuição
deste arquivo, mediante cópia ou qualquer outro meio de reprodução, para
outras pessoas. Se você recebeu este ebook através do e-mail ou via ftp de
algum site da Internet, ou através de um CD de Revista, saiba que você
está com uma cópia pirata, ilegal, não autorizada, a qual constitui crime de
Violação de Direito Autoral, de acordo com a Lei 5988. Se for este o caso
entre em contato com o autor, através do e-mail mauricio@ascompras.com
, para regularizar esta cópia. Ao regularizar a sua cópia você irá remunerar,
mediante uma pequena quantia, o trabalho do autor e incentivar que novos
trabalhos sejam disponibilizados. Se você tiver sugestões 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 informática.
• Guias de Estudo para os Exames de Certificação da Microsoft.
• Artigos e dicas sobre Certificações da Microsoft.
• Artigos sobre Carreira e Trabalho.
• Dicas de livros e sites sobre diversos assuntos.
• Simulados gratuitos, em português, para os exames da Microsoft.
3. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
• ESTE E-BOOK NÃO PODE SER
FORNECIDO EM UM CD OU DVD DE
NENHUMA REVISTA.
• SE VOCÊ OBTEVE UMA CÓPIA DESTE E-
BOOK ATRAVÉS DO E-MULE, KAZAA,
MORPHEUS OU OUTRO PROGRAMA DE
COMPARTILHAMENTO, SAIBA QUE
VOCÊ ESTÁ COM UMA CÓPIA ILEGAL,
NÃO AUTORIZADA.
• USAR UMA CÓPIA NÃO AUTORIZADA É
CRIME DE VIOLAÇÃO DE DIREITOS
AUTORAIS, COM PENA PREVISTA DE
CADEIA.
• VOCÊ SÓ PODE USAR ESTE E-BOOK SE
VOCÊ COMPROU DIRETAMENTE COM O
AUTOR: MAURÍCIO JÚNIOR OU COMPROU
ATRAVÉS DO SITE
SHOP.LINHADECODIGO.COM.BR.
4. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
PIRATARIA É CRIME, COM PENA DE CADEIA. EU
AGRADEÇO PELA SUA HONESTIDADE. SE VOCÊ COMPROU
UMA CÓPIA DESTE CURSO, DIRETAMENTE EM
SHOP.LINHADECODIGO.COM.BR OU DIRETAMENTE COM O
AUTOR WWW.MAURICIOJUNIOR.ORG OU
WWW.ASCOMPRAS.COM , NÃO DISTRIBUA CÓPIAS PARA
OUTRAS PESSOAS.
SE VOCÊ BAIXOU UMA CÓPIA DESTE ARQUIVO USANDO
UM SOFTWARE TAL COMO O E-MULE OU O KAZAA, SAIBA
QUE VOCÊ ESTÁ COM UMA CÓPIA PIRATA, ILEGAL. USAR
UMA CÓPIA ILEGAL É CRIME DE VIOLAÇÃO DE DIREITOS
AUTORAIS.
ESTE ARQUIVO NÃO 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 ATRAVÉS DO SITE
SHOP.LINHADECODIGO.COM.BR
SE VOCÊ RECEBEU UMA CÓPIA ILEGAL DESTE ARQUIVO,
NÃO ADQUIRIDA DIRETAMENTE PELOS MEIOS
DESCRITOS NO INÍCIO DA PÁGINA, ENTRE EM CONTATO
E REGULARIZE A SUA CÓPIA.
5. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Palavras do autor: Maurício Júnior
Tenho 24 anos e possuo três livros publicados pela editora Ciência Moderna
no ano de 2005.
Procurei em todos os livros mostrar detalhadamente conceitos de orientação
a objetos, banco de dados como mysql e sql server e componentes da
própria ferramenta de desenvolvimento.
Sou MCP Microsoft WebApplication, faço parte da comunidade
ASPNETI.COM (www.aspneti.com), onde publico todos os artigos, vídeos,
ebooks e livros.
Trabalho como consultor .NET na empresa STEFANINI IT Solution, fábrica
de software. Ministrei palestras e cursos sobre C#.NET, WebSerivces, Banco
de Dados SQL Server 2000, ASP 3.0, HTML Dinâmico e lógica de
programação pela empresa POLITEC LTDA, fábrica 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 dúvida, fale diretamente com o autor através do site
www.mauriciojunior.org ou pelo e-mail mauricio@ascompras.com.
6. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Anotações:
7. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Anotações:
8. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Índice
CRIANDO RSS XML PARA O SEU PRÓPRIO SITE ..........................................11
CRIANDO MENU DINÂMICO COM C#.NET PASSO 1 ...............................19
CRIANDO MENU DINÂMICO COM C#.NET PASSO 2 ...............................29
Com diferenciação de usuário.......................................................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 USUÁRIO 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 RELATÓRIO E EXPORTANDO PARA O EXCEL.................................. 105
COM VISUAL STUDIO.NET 2005.......................................................... 105
ORIENTAÇÃO 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
PADRÃO DE CODIFICAÇÃO PARA .NET ................................................... 152
C#.NET...................................................................................... 152
INTRODUÇÃO ................................................................................ 153
PADRÕES DE DESENVOLVIMENTO C# ............................................... 153
ENDENTAÇÃO DE CÓDIGO .................................................................. 153
COMENTÁRIOS ............................................................................... 154
Comentários de classes e métodos.............................................. 155
DECLARAÇÕES ............................................................................... 156
Variáveis privadas de classe....................................................... 156
9. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Variáveis locais ........................................................................ 156
Namespace.............................................................................. 156
Interface ................................................................................. 156
Métodos .................................................................................. 156
Enumerações ........................................................................... 156
Eventos................................................................................... 157
Constantes .............................................................................. 157
Exceções................................................................................. 157
Propriedades públicas ............................................................... 157
Windows Forms........................................................................ 158
Objeto de dados....................................................................... 160
Variáveis................................................................................. 160
Web Forms.............................................................................. 161
CONSIDERAÇÕES ............................................................................ 162
COMUNICAÇÃO .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 CONEXÃO 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
CÓDIGO BEHING ............................................................................ 211
GRIDVIEW PARTE II ........................................................................ 213
VISUAL STUDIO.NET 2005 ............................................................... 213
GRIDVIEW PARTE III ....................................................................... 224
VISUAL STUDIO .NET 2005............................................................... 224
Método RowDeleting ................................................................. 229
IMPRIMIR COM VISUAL STUDIO.NET 2005 USANDO C#.NET. ...................... 233
LABEL SERVER CONTROL COM VISUAL STUDIO.NET 2005. .......................... 241
10. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
PRATICANDO ................................................................................. 242
MISTURANDO DADOS ....................................................................... 246
OBFUSCAR DADOS COM VISUAL STUDIO.NET 2005................................... 246
Pré-requisitos: ......................................................................... 246
Propriedades do form:............................................................... 247
PROGRAMANDO FORM2..................................................................... 251
TESTANDO APLICAÇÃO:..................................................................... 254
ORIENTAÇÃO A OBJETOS COM ............................................................. 256
VISUAL STUDIO.NET 2005 (O FAMOSO OO) – PARTE 1.............................. 256
RESOURCES E INTERNACIONALIZAÇÃO USANDO VISUAL STUDIO.NET 2005 (PARTE I)
................................................................................................ 278
INDO PARA PRÁTICA......................................................................... 279
RESOURCES E INTERNACIONALIZAÇÃO 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 PRÁTICA.................................................................... 317
ARMAZENANDO DADOS NO VIEWSTATE PARTE II ...................................... 326
VISUAL STUDIO.NET 2005 ............................................................... 327
DIRETO PARA A PRÁTICA ................................................................... 327
11. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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
conteúdo Web. Ele permite, por exemplo, que o administrador de um site
de notícias crie um arquivo XML com as últimas manchetes publicadas, a
fim de compartilhá-las mais rapidamente com seus leitores. Este arquivo
poderá ser lido através de qualquer ferramenta que seja capaz de entender
o formato XML do RSS.
12. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Crie um arquivo RSS.aspx clicando com o botão 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 métodos dentro da
mesma. Uma chamada Conecta() e outra chamada Desconecta().
Segue abaixo a figura mostrando o primeiro método comentado acima:
13. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Segue abaixo a figura do segundo método criado na classe
BancoDados.cs.
14. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Depois de criado os dois métodos da classe irei programar dentro da classe
RSS.ASPX. Dentro da classe RSS, criei um método protegido sem passar
parâmetros e sem retornar parâmetros. O método chama geraRSS().
Segue a figura abaixo mostrando a classe:
15. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 método: protected void geraRss(), veja que é void,
ou seja, sem retorno e sem parâmetros de entrada como dito antes. Segue
todo código desse método a seguir.
protected void geraRss()
{
Response.Clear();
Response.ContentType = "text/xml";
16. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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
17. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
/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 método:
Primeiramente crio um objeto XmlTextWriter e vou escrevendo dentro dele.
Crio vários elementos (WriteElementString) e vou adicionando as tags. Logo
depois instancio a classe criada anteriormente de banco de dados e chamo
o método para conectar.
Na linha abaixo, depois de conectar no banco de dados, crio uma variável
sql fazendo um select nas tabelas do banco de dados. Não 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 próprio select.
Logo depois, executo e faço um laço 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 código que foi criado acima.
18. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Espero ter ajudado a todos.
Pessoal, foi criado um novo grupo chamado ASPNETI.com.br para ajudar a
todos os desenvolvedores do Brasil com Fórum, Enquête, Artigos e muito
mais.
19. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
MENU DINÂMICO 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 página .aspx. Estarei
explicando passo a passo de como fazer o menu dinâmico 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.
Referência: 1-1
Cliquei com o botão direito em cima do projeto, fui ao menu Add Folder,
logo após Regular Folder, digitei o nome menu. Figura 1-2.
20. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-2
Depois da pasta criada, cliquei com o botão direito em cima da pasta menu,
logo apo Add New Item..., adicionando um arquivo user control. Não
esqueça que um arquivo user control, tem a extensão .ascx. Veja na figura
1-3 o passo a passo.
21. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-3
A figura 1-4 mostra apenas user control, colocando o nome menu.ascx.
Referência: 1-4
22. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Depois de criado, tenho que adicionar uma dll de referência no projeto para
usá-la. Clique com o botão direito em cima do projeto e clique Add
Reference, e escolha a dll. Veja na figura 1-5.
Referência: 1-5
A figura de referência 1-6 apenas mostra adicionando a dll no projeto para
ser usada mais tarde. Lembre-se que essa dll é grátis e pode ser adicionada
no seu projeto apenas clicando no Add Reference...
23. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-6
Adicione dentro da página menu.ascx o código 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 página 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 código acima foi inserido
na parte HTML da página.
24. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Antes de inserir o code-behing da página 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.
Referência: 1-7
Veja a figura de referência 1-8, mostra o código xml do arquivo do
menu.xml.
25. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-9
Depois de criar o arquivo menu.xml definindo o menu, abri o arquivo
menu.ascx, cliquei duas vezes na página normalmente e adicionei o código
abaixo:
protected void preencheMenu()
{
this.Menu1.DataSource =
"http://localhost/Artigos/menu/menu.xml";
this.Menu1.DataBind();
}
Criei apenas um método 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 botão direito em cima do projeto e adicionei mais uma página
chamada default.aspx, por enquanto a mesma terá só um prefixo
26. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
incluindo o arquivo menu.ascx. Funciona como se fosse include no ASP
3.0.
Veja o código abaixo junto com a explicação:
Primeiramente adicionei um Prefixo indicando o nome do arquivo ascx.
<%@ Register TagPrefix="Prefixo" TagName="menu"
src="menu/menu.ascx" %>
Depois de colocar o endereço correto do arquivo, uso o mesmo mais abaixo,
com o seguinte código:
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 referência 1-10 mostra como o código ficará na página
default.aspx.
27. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-10
Coloquei como página inicial do projeto o arquivo default.aspx e iniciei a
aplicação. Veja na figura de referência 1-11 o funcionamento do menu. O
interessante é que o menu funciona em qualquer brownser sem problemas.
28. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-11
29. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
CRIANDO MENU DINÂMICO COM C#.NET Passo 2
Com diferenciação de usuário.
Anteriormente foi criado um menu geral para todos visualizarem.
Mostrarei como criar menu dependendo do tipo do usuário que entrar na
aplicação, um a um. Primeiramente, estarei criando um arquivo chamado
tipoUsuario.aspx, lá terá dois links. Um como administrador, e outro
apenas como usuário normal.
Veja a figura 2-1.
Referência: 2-1
Veja a especificação da tela 2-1:
LinkButton
30. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Id = lnkUsuario
Text = Usuário Normal
LinkButton
Id = lnkAdmin
Text = Usuário Admin
Depois de criado os atributos da página 2-1, dê um duplo clique no link
Usuário.
Estarei inserindo o código abaixo:
private void lnkUsuario_Click(object sender, System.EventArgs e)
{
Session["tipo"] = "Usuario";
Response.Redirect("default.aspx");
}
Veja que estou criando uma sessão chamada tipo e atribuindo um valor
chamado Usuario, sem acento ou caracter especial. Logo depois, estou
redirecionando para a página default.aspx.
Em seguida, dê um duplo clique no link Usuário ADMIN e adicione o
seguinte código:
private void lnkAdmin_Click(object sender, System.EventArgs e)
{
Session["tipo"] = "Admin";
Response.Redirect("default.aspx");
}
31. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Veja que coloquei a minha variável de sessão do tipo Admin e redirecionei
para a página default.aspx. Mais a frente verá o que significa essa sessão
tipo Admin e ou Usuário.
A figure 2-2 mostra como ficou o código que foi adicionado acima.
Veja a figura de referência 2-2.
Referência: 2-2
Passando para o menu.xml, terei que alterá-lo, colocando outras tags e
adicionando mais menus. O código abaixo mostra como deve ficar o código
xml.
<?xml version="1.0" encoding="utf-8" ?>
<menu>
<!-- Menu Principal para todos -->
<menuItem>
<text>Principal</text>
32. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
<url></url>
<subMenu>
<menuItem>
<text>Página 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>
33. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
</menuItem>
</subMenu>
</menuItem>
</menu>
O código que está de laranja indica que foi mudado em relação ao xml do
artigo passo 1.
O código da cor azul, indica a tag que deve ser acrescentada.
Veja o código abaixo que está em azul.
<roles>Usuario</roles>
Esta tag <roles> indica o tipo de usuário ou nível de usuário que pode
acessar / ver as páginas de acordo com o tipo de usuário. Foi adicionado o
nome Usuario e Admin.
A figura 2-3 mostra como ficou o arquivo menu.xml.
34. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 2-3
Antes de testar o sistema e o menu, entre no arquivo menu/menu.ascx e
faça a seguinte alteração:
protected void preencheMenu()
{
Menu1.UserRoles.Add(Session["tipo"].ToString());
this.Menu1.DataSource="http://localhost:1060/WebSite2/menu/menu.xml"
;
this.Menu1.DataBind();
}
O método criado preencheMenu(), foi mudado. Foi acrescentado a linha
em azul, significa que o tipo de usuário UserRoles será o que está em
Session[“tipo”].
Bem simples de ser entendido e de fazer.
A figura 2-4 mostra como ficou o código:
35. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 2-4
Depois de tudo alterado, coloque o arquivo tipoUsuario.aspx como página
inicial do seu projeto. Figura 2-5.
36. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 2-5
Inicie o sistema, logo após clique no usuário normal.
Figura 2-6.
Referência: 2-6
Veja o menu com o tipo usuário normal. Figura 2-7.
37. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 2-7
Veja agora o menu criado depois que clica com o usuário Admin.
Figura 2-8.
38. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 2-8
A diferença é que um aparece o Editar e outro só aparece o CADASTRAR.
Lembrando que esse menu dinâmico pode ser usado em qualquer brownser.
Espero que tenha gostado.
39. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Ajax com Visual Studio.NET 2005
Referência: 1.1
A cada dia a Microsoft tem criado ferramentas para melhorar o
desenvolvimento de aplicativos e softwares que possam ajudar empresas
públicas, privadas e governo.
Ajax significa “Asynchronous Javascript And Xml”, e é uma técnica
relativamente antiga, mas que até 2 anos e meio atrás não tinha um nome
próprio, era mais um “truque” na manga de programadores avançados.
Essa técnica consiste em utilizar Javascript, XML e XmlHttpRequest de
forma a criar paginas que executem código sem serem recarregadas, ou
seja, para utilizar um termo mais utilizado entre os programadores e
analistas ASPNET, sem realizar postbacks ou reload na página.
40. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Uma outra forma de explicar isso, é dizer que o Ajax permite um
comportamento assíncrono de sua página, ou seja, seu programa vai
executar o código no servidor sem que a pagina fique “travada”,
permitindo que o usuário 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 programação para web, tais como PHP, Perl, ASP, JAVA e outros, vêm
incorporando bibliotecas para suporte a Ajax, e não poderia ser diferente
com ASPNET. A implementação mais popular é chamada de Ajax.Net, irei
explorar algumas possibilidades da tecnologia.
Adicionando o Ajax no Visual Studio.NET 2005
Antes de adicionar a referência 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 referência 1.2 mostra
perfeitamente como baixar a DLL.
41. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 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 referência 1.3.
42. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.3
Cliquei com o botão direito no projeto VS 2005, fui na opção ADD
REFERENCE... Depois disso, tenho que indicar onde se encontra a DLL. Não
posso esquecer que deixei no DESKTOP do micro. Tente seguir passo a
passo para não ter erro.
43. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.4
No próximo passo, é indicar onde está a DLL para o projeto criado.
A referência 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.
44. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.5
Prontinho, adicionei a referência no meu projeto com sucesso. A nova
ferramenta da Microsoft quando adicionado um novo projeto, não vem com
o arquivo de configuração web.config. Tenho que clicar com o botão direito
e adicionar um novo item.
45. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.6
Adicionei o arquivo de configuração WEB.CONFI, agora tenho que
adicionar uma linha para configuração do AJAX e para que funcione
corretamente.
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx"
type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
Esse código de estar dentro da tag SYSTEM.WEB, não posso esquecer
disso, acredito que nem você pode esquecer disso.
46. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 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
página / classe chamda Default.aspx dentro do projeto. Só clicar com o
botão direito e ir a opção ADD NEW ITEM.
47. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.8
Dentro dessa página, utilizarei os objetos da ferramenta como textbox,
botão e um div.
Segue todo o código da página DEFAULT.ASPX abaixo para verificar os
nomes dos controles e javascript.
TextBox
Id = txtNome
Button
Id = cmdEnviar
Div
Id = divResultado
48. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Note que o button fiz como se fosse html, não usei o controle da
ferramenta. Dentro do button existe um atributo chamado ONCLICK que
chama uma função JAVASCRIPT criada. A função JAVASCRIPT pega o valor
digitado pelo usuário e passa para o método criado na classe .aspx.cs.
O retorno da função é lançado para outra função 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>
49. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
</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 página HTML criada, tenho que fazer algumas coisas básicas
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
50. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
{
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 método criado que pode ser usado pelo ajax, deve começar com a
linha [Ajax.AjaxMethod()], apenas isso. Note que no HTML, na parte de
JAVASCRIPT chamo o nome da classe, ponto o nome do método.
CLASSE.METODO(parametro).
Feito isso, só executar e verificar que a página vai a sua classe sem mesmo
dar o postback, ou seja, sem reload algum.
51. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.9
52. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Gerando Documento Word com Visual Studio.NET 2005
É bem simples e de fácil uso.
É feito com a linguagem C#.NET 2.0.
Você deve ter instalado em sua máquina 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 usuário desenvolvedor não precisa ter instalado na máquina o
aplicativo IIS,apenas para desenvolvimento.
A tela de referência 1-1 mostra a IDE com o projeto criado.
Referência: 1-1
53. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Cliquei com o botão direito do mouse em cima do projeto e adicionei um
novo item. Esse item terá o nome de word.aspx.
A tela de referência 1-2 mostra como adicionar um novo item no projeto.
Referência: 1-2
A figura de referência 1-3 mostra apenas como escolher o tipo do item que
será criado dentro do projeto. É um tipo WebForm.
54. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 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.
55. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-4
Dentro dessa classe criada, criei um método chamado geraWord().
Segue o código abaixo do método 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 método, podemos ver que é um método
protegido, que não retorna nada e não espera nada de parâmetros. Bem
simples e direto.
protected void geraWord()
Depois de inserir o código 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.
56. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-5.
No modo de design ficará da seguinte forma. Figura 1-6.
57. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-6
Marquei o objeto como página inicial do projeto e executei-o.
O mesmo abrirá o word com todas as palavras específicas do HTML
inseridas.
Veja a figura 1-7.
Antes, não esqueça de colocar no load da classe a chamada para gerar o
seu word.
protected void Page_Load(object sender, EventArgs e)
{
geraWord();
}
58. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-7
Prontinho, o seu word está com todo o conteúdo que colocastes no html.
A minha dica é a seguinte:
Faça tudo com os componentes, datagrid, datalist e depois apenas faça um
método para gerar o word. Lógico que depois que estiver pronto toda a
execução da sua regra de negócio.
Espero ter ajudado.
59. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Ajax com C#.NET,
Usando tecnologia ASPNET (parte 1).
* Instalando Ajax.Net
Antes de começar a utilizar a tecnologia Ajax.Net, primeiramente tenho que
instalar em meu projeto a DLL Ajax.Net. A mesma pode ser baixada no
endereço http://ajax.schwarz-interactive.de e é composto além da DLL um
ótimo tutorial em inglês. Clique em Download the latest DLL e
descompacte o arquivo em algum diretório de sua máquina.
Abra o Visual Studio.NET 2003 e crie um projeto ASPNET com o nome que
quiser. É necessário adicionar essa referência ao seu projeto. Siga os
passos abaixo: No Visual Studio, em Solution Explorer, clicar com o botão
direito do mouse em References e em Add Reference, na aba .NET, clique
em Browser e selecione o arquivo ajax.dll no diretório que foi
descompactado.
60. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-1
Referência: 1-2
Para configurar uma ultima coisa, deve ser inserido as linhas abaixo no
arquivo web.config e dentro do laço 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 necessário. Pronto, agora já pode ser
criada uma página para teste.
61. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
* Hello World
Para funcionar o Ajax devo fazer em duas partes: uma parte reside no
servidor, ou seja, no código .cs, executa a parte compilada do código, por
exemplo, validar um usuário, 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 código seguinte:
[Ajax.AjaxMethod()]
public string HelloAjax(string nome)
{
return "Olá de Ajax, " + nome + "!";
}
A única coisa diferente nesse método é a linha de código
[Ajax.AjaxMethod()].
Dentro do método padrão que já vem na classe, o famoso Page_Load
devemos inserir o seguinte código:
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(WebForm1));
}
Esse comando acima adiciona automaticamente um bloco de código
javascript em nossa pagina aspx, para que ela possa lidar com as chamadas
Ajax. O importante é você colocar o parâmetro do typeof, ou seja, o nome
62. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
da classe que você quer expor, nesse caso, o nome que você deu a sua
pagina. Como estou mantendo o padrão que está vindo no Visual
Studio.NET, então a minha pagina é WebForm1.aspx.
Certo a parte do código fonte era isso, agora devo ir a parte do código html.
Dentro do Form1, adicione uma caixa de texto, um botão 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 funções em javascript. É recomendado colocar
todas as funções em javascript dentro do código <head></head>. As
funções podem ser acrescentadas em qualquer parte do html, porém 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>
63. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Prontinho, agora inicie o projeto, digite o nome e clique no botão.
Referência: 1-3
Clique no botão Alo Ajax e veja a rapidez que é mostrado o código ou
descrição que fizemos. Note também que a pagina não é da reload, ou seja,
a pagina não é recarregada.
64. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-4
Espero que tenha ajudado.
65. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Ajax parte II
(buscando usuário 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.
Referência: 1.1
Especificação da tabela:
Nome: TB_USUARIO
Campos:
ch_usuario int
66. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
no_usuario varchar(200)
pw_usuario varchar(255)
email_usuario varchar(255)
Logo depois criei uma classe chamada acessoBanco.cs com conexão com
o banco de dados, essa classe tem dois métodos Conecta() e
Desconecta().
Foi criado a seguir uma classe Usuario.cs que possui um método chamado
insereUsuario passando os valores nome,senha e email como
parâmetros do método.
A classe de criptografia também foi criada para criptografar a senha na hora
que for inserida no banco de dados.
Explicarei como buscar os usuários do banco de dados automaticamente
depois de inseri-los. Criarei mais um método 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;
}
67. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
DataSet dtSet = new DataSet();
OdbcDataAdapter dtAdapter = new
OdbcDataAdapter(sql,sBanco.sConn);
dtAdapter.Fill(dtSet);
sBanco.Desconecta();
return dtSet;
}
Referência: 1.2
Não posso esquecer de referenciar o método [Ajax.Method()] para que o
objeto possa encontrar o método que estou utilizando. Na segunda linha
estou usando o método 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.
68. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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{
69. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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>";
}
70. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 Usuário</button>
<br>
<br>
<button onclick="ExecutaBuscaUsuario()"
type="button">Busca Usuário</button>
<br>
<br>
<div id="divResposta"></div>
<br>
<div id="divRespostaUsuario"></div>
</form>
</body>
</HTML>
A parte do código que está em amarelo são os campos e o botão que chama
o método que está na cor azul. A parte que está na cor vermelha traz e
71. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
executa a busca do usuário, esse div de vermelho mostra a parte de
usuário, ou seja, a tabela que virá do banco de dados.
Na posso esquecer de comentar o codebehing (código de trás) 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 reconheça todos
os métodos da classe registrada da forma do código acima.
Executei o código iniciando o projeto.
Referência: 1.3
72. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Digitando o nome do usuário, senha e e-mail, clique no botão inserir,
automaticamente e sem dar refresh na classe, ou seja, não da postback. Irá
aparecer todos os usuários automaticamente no segundo div criado
anteriormente.
Referência: 1.3
Digitei o nome, senha e e-mail do usuário, cliquei no botão inserir e
automaticamente inseriu no banco de dados e mostrou todos os usuários
que já estavam na tabela de usuário.
Espero ter ajudado a todos.
73. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Inserindo Usuário no Banco de Dados MYSQL Usando Tecnologia
AJAX
Demonstrarei como inserir um usuário no banco de dados sem realizar o
postback ou refresh na página. É uma continuação do Ajax anterior.
Referência: 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)
74. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Depois da estrutura do banco de dados criada, irei inserir um método
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
{
75. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
sBanco.Desconecta();
}
}
Anterior, criei a classe acessoBanco.cs com os métodos para abrir o banco
de dados e fechar o banco de dados, ou seja, a conexão com o banco de
dados. Estou usando a mesma classe e o mesmo método, 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 conexão e fechando
logo depois. Se for inserido corretamente o método retornará true, se der
algum erro retornará false.
Referência: 1-2
Dentro do método insereUsuario, estou utilizando a classe Criptografia.cs e
o método encrypt passando a string senha.
Abaixo segue todo o código da classe Criptografia.cs:
76. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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);
77. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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();
78. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 página
WebForm1.aspx coloquei o código 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
Usuário</button>
<br><br>
79. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
<div id="divResposta"></div>
</form>
Veja que tenho os objetos na tela como nome, senha, email e um botão
Insere Usuário. Preste atenção que, o meu botão executa um script em
javascript chamado InsereUsuario(). Veja o código 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 código inserido no HTML do webform1.aspx, só inicie o seu
projeto com o banco de dados iniciado.
80. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-3
Digite valores nos campos e clicar no botão para inserir.
Veja que o mesmo irá inserir no banco de dados sem mesmo dar um
refresh na página ou falando diretamente com os desenvolvedores .net, um
postback.
81. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-4
Referência: 1-5
82. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Veja no banco de dados que o mesmo foi inserido com sucesso.
Referência: 1-6
Espero que tenha ajudado a todos.
83. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Criando TreeView com Visual Studio.NET 2005 (parte 1)
Antes de tudo, explicarei qual o objetivo da criação do TreeView com Visual
Studio.NET 2005. Se alguém não conhece o menu ou o nome Newsgroups
MSDN Brasil da Microsoft.
Para ver o treeview que irei criar é parecido com o do site
http://www.microsoft.com/brasil/msdn/newsgroups/default.mspx ou veja a
figura de referência 1-1.
Referência: 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 página. Veja a figura 1-2.
84. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-2
Na barra de ferramentas Toolbox, no item Navigation existe o objeto
TreeView pronto para ser arrastado e colocado dentro da página. Veja a
figura 1-3.
85. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-3
Coloquei o nome ou o ID do objeto chamado treeView. Segue o código da
página 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>
86. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
<asp:TreeView runat=server ID="treeView" ExpandDepth=0>
</asp:TreeView>
</div>
</form>
</body>
</html>
O que está de amarelo é o componente que adicionei na página. Agora irei
criar apenas opções para ser mostradas na página. Na figura 1-4, é
mostrado o que foi acrescentado para ser criado o primeiro menu.
Referência: 1-4
Cliquei com o botão direto e deixando o TreeView2005.aspx para ser a
principal página do projeto. Executando o projeto apenas com esse código
acrescentado, veja as figuras 1-5 e 1-6 o que já foi criado.
87. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-5
Expandindo o treeView, aparecerá as opções daquele treeView.
Referência: 1-6
88. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Acrescentei mais uma tagLib dentro do objeto para aparece mais uma
opção dentro do TreeView. Veja a figura 1-7.
Referência: 1-7
Executei novamente a pagina do projeto e veja o resultado na figura 1-8
abaixo.
89. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-8
Espero ter ajudado.
O treeview será desenvolvido com banco de dados SQL Server.
Aguardo e verás mais e mais.
90. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 fácil 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 máquina já vem com
esse banco padrão.
Não irei fazer OO (orientado a objetos), o código será todo dentro da página
treeView.aspx. A parte 3, refatorarei o código colocando da forma OO.
O primeiro de tudo, devo colocar o código do objeto na parte de html, ou
apenas arrastar da toolbox o objeto treeview.
Segue o código:
<asp:TreeView
ID="Tree"
runat="server"
ExpandDepth=0
OnSelectedNodeChanged="SelectedNodeChanged">
</asp:TreeView>
A ilustração do objeto acima está nas próximas figuras 1.1 e 1.2.
91. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.1
Referência: 1.2
92. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
No começo do código, criei uma constante chamada conectionString
armazenando o a linha de conexão do banco de dados.
///classe de importação para usar banco de dados
using System.Data.SqlClient;
///constante com variável de conexão com o banco de dados
const string connectionString =
"Server=localhost;Integrated Security=True;Database=Northwind";
Veja a figura de referência 1.3.
Referência: 1.3
O próximo código abaixo será chamado no load da página. Criei um método
protegido e que não volta nada. Segue o mesmo.
///método que popula o treeview
protected void Popula()
{
93. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 código que está pintada de amarela é outro método 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",
94. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
dst.Tables["Categories"].Columns["CategoryID"],
dst.Tables["Products"].Columns["CategoryID"]);
return dst;
}
O código acima treeViewData() retorna para quem chamou um objeto
dataset. Dentro do bloco do código, conecto no banco de dados, crio um
select que é uma instrução PSSQL, passando a minha variável 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 código, preencho os objetos dataSet, relaciono os valores e
retorno o dataSet.
O método 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 nós no treeView.
Veja o mesmo em funcionamento. Não esqueça de iniciar o SQL SERVER.
Set como a página de inicialização e clique F5. A figura 1.4 mostra a
ilustração do funcionamento.
95. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.4
Ainda não acabou e voltando ao código do treeView, na parte de html veja
que existe uma tag diferente.
OnSelectedNodeChanged="SelectedNodeChanged">
Esse SelectedNodeChanged é um método que criei para quando o usuário
clicar em um link ou linha do treeView, o mesmo será redirecionado
passando alguns valores. Veja o código abaixo:
protected void SelectedNodeChanged(object sender, EventArgs e)
{
Response.Redirect("rss.aspx?no=" +
this.Tree.SelectedValue.ToString() + "&de=" +
this.Tree.SelectedNode.Text);
96. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
}
Desde já agradeço a todos e espero ter ajudado.
97. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 fácil entendimento, por isso peço 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,
porém não sabia como desenvolver direito e da melhor forma.
Antes de começar definitivamente, irei escrever uma frase cujo você terá
que decifra-la, no próximo, 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 referência 1.1 mostra a primeira página criada.
98. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.1
Estou desenvolvendo com Visual Studio.NET 2005 Beta II. Coloquei na
classe alguns objetos de tela como botão, label e textbox. Segue abaixo a
especificação toda da tela:
TextBox
Id = txtNome
Label
Id = lblNome
ForeColor = Red
Button
Id = cmdBotao
Text = Botão Confirmação
Button
Id = cmdAlert
Text = Gerar Alerta
A classe só possui esses objetos de tela, segue o código da página:
<%@ 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">
99. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
<title>String Builder</title>
</head>
<body>
<form id="form1" runat="server">
<div>
Nome:
<asp:TextBox ID="txtNome"
runat="server"></asp:TextBox>
<asp:Button ID="cmdBotao" runat="server"
OnClick="cmdBotao_Click" Text="Botão Confirmação" />
<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 página e no método load adicionei um
atributo para o botão no onclick, é bem simples esse código e serve para
adicionar uma mensagem de confirmação para o botão 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
100. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
false;");
}
Veja que existe um if (confirm(‘ dentro do Add, logo depois existe uma
mensagem que será exibida quando clicar no botão. Continuando com o if,
no final pergunta se é igual a false (==false), se for retorna false; dessa
forma a página não da submit ou postback.
Cliquei duas vezes no botão cmdBotao e adicionei um código dentro.
protected void cmdBotao_Click(object sender, EventArgs e)
{
lblNome.Text = "Inserido com sucesso, " +
txtNome.Text;
}
O código adicionado apenas mostra uma mensagem no label inserido com
sucesso passando o nome que foi digitado no código textbox. Mostrarei o
funcionamento da página neste momento.
101. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.2
Clicando com no botão confirmação o mesmo mostrará uma mensagem
para o usuário. A figura 1.3 mostra o funcionamento depois do clique do
botão.
102. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.3
Preenchi o campo e clicando no botão confirmar, depois na opção ok, o
mesmo mostra no código inserido com sucesso e o nome que foi digitado no
textbox. A figura 1.4 mostra isso perfeitamente.
103. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.4
Passando para o próximo botão 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 código do botão:
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());
}
104. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Antes de tudo você deve importar ou usar o System.Text; ou seja,
referencia no começo da classe o Text para usar depois o stringbuilder.
A referência 1.5 mostra como funciona o botão criado.
Referência: 1.5
Pessoal, espero que tenha aprendido alguma coisa.
105. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Gerando Relatório e Exportando para o Excel
Com Visual Studio.Net 2005
Nesta parte, mostro como gerar relatório e exportar para o Excel. Espero
que possa estar aprendendo muito. É de simples entendimento e rápida
produtividade para gerar o mesmo. O mesmo será desenvolvimento em
C#.NET.
Referência: 1-1
Na tela de referência 1-1 mostro apenas a tela que gerei com o visual
studio.net 2005. Cliquei com o botão direito no produto e adicionei um novo
item ADD NEW ITEM... O nome do novo item é gerandoExcel.aspx.
O código abaixo mostra o que tem na parte HTML da página:
106. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
<%@ 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 página 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.
107. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-2
Dentro da classe, já dentro do código C#.NET, criarei um método para
gerar em arquivo excel. Será chamada depois do objeto label for
preenchido. Note que é bem simples, dessa forma poderei fazer qualquer
relatório ser mostrado no excel.
108. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-3
Segue o código:
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 = "";
109. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 código:
Na entrada da página, preencho o label com um texto aleatório como
"Teste <br> teste <br> gerando excel <br>"; . A linha debaixo,
chamo o método criado para gerar o arquivo excel. O método chama-se
geraExcel() que já faz o mesmo virar um arquivo excel. O segredo do
método é a linha Response.ContentType = "application/vnd.ms-
excel"; . Note que a assinatura do método é, protected protegido e void,
não retorna valor algum.
Não esqueça de colocar a página como página inicial do projeto e inicie o
projeto.
110. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-4
Clique em OPEN e espere alguns segundos.
111. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-5
A figura 1-5 mostra resultado acima do código criado. Pode ser feito
qualquer relatório com qualquer objeto na tela, depois é só chamar o
método para gerar o relatório.
112. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Orientação 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 usuário é enviado um e-mail
automaticamente. Antes de tudo irei criar duas novas classes para o
projeto. Uma se chamará ConstantesSistema.cs e a outra
EnviaEmail.cs.
A primeira classe armazena as variáveis do sistema para enviar e-mail.
A segunda classe terá dois métodos para enviar e-mail automaticamente.
A classe EnviaEmail.cs estende da classe ConstantesSistema.cs, ou
seja, todas as variáveis e métodos criados na classe estendida poderá ser
acessado e usado na classe de e-mail.
Referência: 1.1
As duas classes circuladas na figura 1.1 mostra que serão usadas.
Seguindo com o sistema, a figura 1.2 é mostrada apenas as variáveis.
113. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.2
Segue a descrição 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 variáveis:
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 autenticação, ou seja, numero 1.
114. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
É bem simples a classe ConstantesSistema.cs.
Referência: 1.3
Continuando e indo para a classe de E-mail, irei inserir dois métodos, um
para autenticar e outro para enviar o e-mail propriamente dito.
115. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.4
A figura 1.4 mostra o método que envia e-mail. Analisando a assinatura do
método, veja que não retorna valor algum e espera quatro parâmetros de
entrada. Segue o código.
/// <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
{
116. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 parâmetros de entrada:
usuarioNome: é o nome do usuário que receberá o e-mail.
usuarioEmail: é o e-mail do usuário que irá receber.
descricaoEmail: é a descrição 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 método. O método catch pega o
erro que ocorrer. Primeiro instancio o método da classe using
System.Web.Mail; chamado MailMessager. O nome da variável chama-se
mail. Portanto uso-a para atribuir os parâmetros e valores em seus
respectivos campos.
117. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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);
}
Não esqueça de que uso as variáveis 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 método 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
118. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
/sendusername"] = MAIL_DE;
mail.Fields["http://schemas.microsoft.com/cdo/configuration
/sendpassword"] = PW_DE;
}
Veja que estou usando as variáveis da outra classe.
Pronto, agora já foram criadas as duas classes que precisava para enviar e-
mail automaticamente.
Referência: 1.5
Vá para a classe Default.aspx e depois que o cadastro foi feito, dentro do
bloco if instancie o método da classe de e-mail passando os parâmetros.
Veja como ficará o mesmo abaixo.
119. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 estão de amarelo é o que foi acrescentado.
Executando o código, irei fazer um cadastro e ver se o e-mail chegou.
120. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1.6
Referência: 1.7
121. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Veja que chegou o e-mail em minha caixa postal.
Referência: 1.8
Espero que tenham gostado.
122. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 código é
bem simples para quem já sabe como funciona e um pouco mais complexo
para quem não sabe ou nunca viu a funcionalidade. No começo do código,
antes de tudo usarei uma tag html com o famoso runat=server. Não ache
estranho, porém preciso ter acesso a objetos de tela dentro do code behing.
Referência: 1-1
O código abaixo mostra o que falei logo acima.
Tag HTML.
<INPUT class="caixa" id="txtImagem" style="WIDTH: 296px;
HEIGHT: 22px" type="file" size="30" name="txtImagem"
123. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
runat="server">
O objeto chama-se txtImagem. Posso pegar esse objeto dentro do código
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"
124. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 atenção nas tags
que uso para enviar arquivo. Na parte de design do Visual Studio.NET 2003
é mostrado na figura 1-2.
125. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-2
Agora mostrarei o código C#.NET enviando uma imagem pela internet.
Referência: 1-3
126. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
/// <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
127. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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 extensão
do arquivo deve ser .GIF ou .JPG ou .PNG');</script>");
Response.Write("<script>location.href='upload.aspx';</scrip
t>");
}
}
Explicando o código C#.NET:
Clique duas vezes no botão enviar. Primeiramente, coloquei um método
antes de enviar o arquivo escolhido. Esse método chama-se
pegaArquivo() e faz apenas uma coisa; pega o nome do arquivo e a
extensão.
Na próxima linha do método cmdEnviar_Click verifico qual a extensão do
arquivo que o usuário escolheu.
128. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
if (sExtensao.ToUpper() == ".GIF" || sExtensao.ToUpper() ==
".JPG" || sExtensao.ToUpper() == ".PNG")
Se a extensão do arquivo escolhido foi algumas dessas descritas na
condição, o arquivo será enviado automaticamente para a internet e dentro
da pasta images.
O código que envia o arquivo para o servidor é:
this.txtImagem.PostedFile.SaveAs(Server.MapPath(".") +
@"images" + nomeArqFinal);
Dica:
Não posso esquecer de criar a pasta images dentro do servidor ou do
próprio computador. Não posso deixar de falar que, deve ter permissão
para fazer upload dentro do servidor da internet, ou seja, deve ter
permissão de leitura e escrita para a pasta images.
Continuando com a análise do código, se não for as extensões que verifiquei
o sistema mostra uma mensagem falando de quais extensões podem ser
escolhidas para enviar o arquivo.
129. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-4
Referência: 1-5
130. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
No clique do botão Enviar Arquivo, a mesma figura será transferida para a
pasta images.
Referência: 1-6
131. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Referência: 1-7
Veja que a figura está dentro da pasta images.
Aqui chego ao final, espero que possa ter ajudado a você.
132. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Criptografando Senhas ou Strings
A segurança hoje em dia tem ficado sempre em primeiro plano quando
dizemos ou falamos em software. Não importa qual o tipo de software ou
sistema, o que vale é a segurança de dados, informações, usuários e
senhas.
A segurança do código é uma prioridade além do próprio sistema, mas
iremos apenas trabalhar agora com criptografia de dados. Não importa o
tipo de dado para criptografar, basta apenas criptografar e garantir a
segurança de informações. Muitas pessoas criam uma nova maneira para
criptografar dados com chaves públicas, privadas e tudo mais.
Demonstrarei como criptografar dados usando uma classe do próprio
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é 2 elevado a 64 bits
(18.446.744.073.709.551.616 bits) ou 2.305.843.009.213.693.952 "Bytes"
ou caracteres, e gera como saída de string de 160 bits ou 20 Bytes. Ele é
um pouco mais lento que o MD5, mas em compensação mais difícil de ser
quebrado.
MD5 (Message Digest) - Ele produz uma saída de 128 bits ou 16 Bytes.
Ele é mais rápido que o SHA-1.
HashPasswordForStoringInConfigFile(senha, formato da
senha)
Senha: string passada ou descrição qualquer que o usuário
digitou
Formato da Senha: tipo do formato, você pode escolher dois
tipos de formato (MD5, SHA1)
133. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Criei uma página no meu projeto com o nome testeCript.aspx, você pode
criar a sua própria página conforme quiser.
Na página, coloquei apenas alguns objetos. Segue a descrição dos mesmos.
TextBox
Id = txtSenha
Text = “em branco”
Button
Id = cmdCript
Text = Criptografar
134. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
Label (são dois)
Id = lblSHA1
Text = “em branco”
Id = lblMD5
Text = “em branco”
Cliquei duas vezes no botão cmdCript e coloquei as seguintes linhas de
código:
private void cmdCript_Click(object sender, System.EventArgs e)
{
lblSHA1.Text = "SHA1 " + criptografarSHA1(txtSenha.Text) ;
lblMD5.Text = "MD5 " + criptografarMD5(txtSenha.Text) ;
}
Veja que ainda não foram criados os métodos criptografarSHA1 nem
criptografarMD5.
Segue os métodos.
private string criptografarSHA1(string cript)
{
return
FormsAuthentication.HashPasswordForStoringInConfigFile(cript,"SHA1");
}
135. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org
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.
136. Curso Prático Visual Studio.NET 2005
Este material não pode ser usado em treinamentos e em sala de aula.
http://www.mauriciojunior.org