SlideShare uma empresa Scribd logo
1 de 330
Baixar para ler offline
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
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.
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.
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.
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.
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:
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:
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
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
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
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.
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:
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.
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:
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";
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
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.
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.
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.
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.
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
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...
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.
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.
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
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.
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.
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
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
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");
}
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>
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>
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.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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>
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
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.
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
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
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.
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.
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.
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.
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();
}
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.
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.
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.
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
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>
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.
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.
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
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;
}
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.
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{
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>";
}
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
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
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.
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)
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
{
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:
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);
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();
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>
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.
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.
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
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.
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.
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.
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>
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.
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
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.
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.
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.
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
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()
{
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",
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.
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);
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.
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.
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">
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>
&nbsp;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
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.
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.
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.
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());
}
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.
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:
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.
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.
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 = "";
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.
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.
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.
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.
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.
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.
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
{
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.
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
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.
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.
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
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.
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"
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"
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.
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
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
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.
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.
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
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
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ê.
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)
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
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");
}
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.
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
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005
Curso prático de visual studio net 2005

Mais conteúdo relacionado

Semelhante a Curso prático de visual studio net 2005

Banco de dados com c visual studio .net 2005
Banco de dados com c  visual studio .net 2005Banco de dados com c  visual studio .net 2005
Banco de dados com c visual studio .net 2005samuel79
 
Apresentacao-Completa-franquiadigital.pdf
Apresentacao-Completa-franquiadigital.pdfApresentacao-Completa-franquiadigital.pdf
Apresentacao-Completa-franquiadigital.pdfMARCIO LOPES
 
Aprendendo a programar com ruby - INTRO
Aprendendo a programar com ruby - INTROAprendendo a programar com ruby - INTRO
Aprendendo a programar com ruby - INTRORafael Biriba
 
Laminas Mala Direta - CTT Supnet
Laminas Mala Direta - CTT SupnetLaminas Mala Direta - CTT Supnet
Laminas Mala Direta - CTT SupnetGuilherme Valle
 
Fabricio (3)flashmecadotrabalho
Fabricio (3)flashmecadotrabalhoFabricio (3)flashmecadotrabalho
Fabricio (3)flashmecadotrabalhoFabricioManzi
 
TUDO O QUE PRECISA DE SABER SOBRE e.LEARNING
TUDO O QUE PRECISA DE SABER SOBRE e.LEARNINGTUDO O QUE PRECISA DE SABER SOBRE e.LEARNING
TUDO O QUE PRECISA DE SABER SOBRE e.LEARNINGComunicarte
 
Apresentação webAula S/A - 2012
Apresentação webAula S/A - 2012Apresentação webAula S/A - 2012
Apresentação webAula S/A - 2012marcoszargon
 
MARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICA
MARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICAMARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICA
MARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICACarlos Silva
 
Manual Win2003 1/14
Manual Win2003 1/14Manual Win2003 1/14
Manual Win2003 1/14wellingondb
 
Webinar Azure - Dia 07
Webinar Azure - Dia 07Webinar Azure - Dia 07
Webinar Azure - Dia 07Alvaro Rezende
 
Manual curso online de vendas
Manual curso online de vendasManual curso online de vendas
Manual curso online de vendasRedimob
 
Orientações para implementação na rede colaborativa de aprendizagem do uca
Orientações para implementação na rede colaborativa de aprendizagem do ucaOrientações para implementação na rede colaborativa de aprendizagem do uca
Orientações para implementação na rede colaborativa de aprendizagem do ucarositalima
 

Semelhante a Curso prático de visual studio net 2005 (20)

Banco de dados com c visual studio .net 2005
Banco de dados com c  visual studio .net 2005Banco de dados com c  visual studio .net 2005
Banco de dados com c visual studio .net 2005
 
Sap
SapSap
Sap
 
Projeto - EADeasy
Projeto - EADeasyProjeto - EADeasy
Projeto - EADeasy
 
Apresentacao-Completa-franquiadigital.pdf
Apresentacao-Completa-franquiadigital.pdfApresentacao-Completa-franquiadigital.pdf
Apresentacao-Completa-franquiadigital.pdf
 
Aprendendo a programar com ruby - INTRO
Aprendendo a programar com ruby - INTROAprendendo a programar com ruby - INTRO
Aprendendo a programar com ruby - INTRO
 
Curso de Excel Avançado.pdf
Curso de Excel Avançado.pdfCurso de Excel Avançado.pdf
Curso de Excel Avançado.pdf
 
Laminas Mala Direta - CTT Supnet
Laminas Mala Direta - CTT SupnetLaminas Mala Direta - CTT Supnet
Laminas Mala Direta - CTT Supnet
 
Cursos a3
Cursos a3Cursos a3
Cursos a3
 
Fabricio (3)flashmecadotrabalho
Fabricio (3)flashmecadotrabalhoFabricio (3)flashmecadotrabalho
Fabricio (3)flashmecadotrabalho
 
TUDO O QUE PRECISA DE SABER SOBRE e.LEARNING
TUDO O QUE PRECISA DE SABER SOBRE e.LEARNINGTUDO O QUE PRECISA DE SABER SOBRE e.LEARNING
TUDO O QUE PRECISA DE SABER SOBRE e.LEARNING
 
Apresentação webAula S/A - 2012
Apresentação webAula S/A - 2012Apresentação webAula S/A - 2012
Apresentação webAula S/A - 2012
 
Como produzir curso online
Como produzir curso onlineComo produzir curso online
Como produzir curso online
 
MARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICA
MARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICAMARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICA
MARKETING DIGITAL: APRENDA TUDO SOBRE O ASSUNTO NA PRÁTICA
 
Manual Win2003 1/14
Manual Win2003 1/14Manual Win2003 1/14
Manual Win2003 1/14
 
Aplicacoes visual class
Aplicacoes visual classAplicacoes visual class
Aplicacoes visual class
 
Proposta para tutores
Proposta para tutoresProposta para tutores
Proposta para tutores
 
Curso de uml
Curso de umlCurso de uml
Curso de uml
 
Webinar Azure - Dia 07
Webinar Azure - Dia 07Webinar Azure - Dia 07
Webinar Azure - Dia 07
 
Manual curso online de vendas
Manual curso online de vendasManual curso online de vendas
Manual curso online de vendas
 
Orientações para implementação na rede colaborativa de aprendizagem do uca
Orientações para implementação na rede colaborativa de aprendizagem do ucaOrientações para implementação na rede colaborativa de aprendizagem do uca
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> &nbsp;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