Vous êtes sur la page 1sur 12

http://raphaelcardoso.com.

br/criando-crud-com-asp-net-web-forms-4-5/

Raphael Cardoso Pesquisar...

Blog sobre Tecnologias e Desenvolvimento

Pgina Inicial Sobre Livros Download Contato

Incio ASP.NET Criando CRUD com Asp.Net Web Forms 4.5

Criando CRUD com Asp.Net Web Forms 4.5


26 de fevereiro de 2014 phmenezes 12 Comentrios

A Microsoft lanou recentemente o novo Framework Web Forms 4.5, que herdou muitas features do
asp.net MVC. Vou falar sobre2novas funcionalidades do mesmo.

Vou criar uma aplicao bem simples para mostrar as novas funcionalidades.

Vou usar Visual Studio 2013 e Entity Framework 6. Voc pode usar o visual studio 2012 e o EF anterior ao
6.

Vou fazer um pequeno crud usando:

Entity Framework Code First, LocalDB


Data Annotations

O Code First desenvolver sem ter que abrir um designer ou denir um arquivo de mapeamento XML
Abordagem de conveno sobre congurao que permite a persistncia de banco de dados sem
congurar nada explicitamente

Opcionalmente substituir a persistncia baseada em conveno e usar uma API de cdigo uente para
personalizar completamente o mapeamento persistncia.

Ele mapea nossas classes e transforma em tabelas do nosso banco de dados. Faz isso de forma
automtica.

Primeiro, crie um novo projeto do tipo Web Forms com framework 4.5.

Dentro do projeto crie uma pasta chamada Model. Dentro dela, crie uma nova classe chamada
ClienteModel conforme a imagem a seguir:


Anotaes:

Key Identica o id da nossa classe. Esse ser o id da tabela. Pois nossa classe representa uma tabela
do banco.
EmailAddress Ele valida o campo para receber um email vlido
DataType(DataType.Date) Formatao do campo data.

Depois de ter criado a classe cliente, vamos criar o DbContext dentro da pasta Model. Crie uma nova
pasta chamada ExemploDbContext. Dentro da pasta crie uma nova classe chamada DbContextExemplo.

A classe tem que herdar deDbContext. Ele vai gerar o nosso banco de dados de forma automtica.
Dentro da classe temos um construtor chamando a classe base de conexo. Esse nome exemplo, o
nome que dei ao nosso banco, o nome da connection string que ca no webCong.

O DbSet uma representao de tipo de coleo genrica de um conjunto de tipos de entidade. Por
exemplo, voc pode ter um DbSet <Cliente> chamada Clientes que uma propriedade de uma classe de
contexto. Manipulamos nosso objeto por meio dele.

Voc pode criar outra classe. Por exemplo, a classe endereo. Depois adicionar ela na classe
DbContext: DbSet<Endereco> Endereos.

Dentro da pasta Model, crie uma classe chamada ClienteCrud. Voc poderia criar uma interface com os
mtodos, mas vou criar somente aclasse. Crie a mesma conforme a imagem abaixo:


Perceba que estou usando o Entry do Entity Framework. Ele obtm oobjeto para a entidade dada
fornecendo acesso a informaes sobre a entidade e a capacidade de executar aes na entidade.
Podemos manipular o estado da entidade. Ento em um nico mtodo, realizo o insert e o update.
Temos tambm o mtodo Delete que bem simples. O EntityState um Enum criado pelo EF. Podemos
observar a facilidade que usar Entity Framework.

Vamos agora modicar aDefault.aspx. Adicione um formview na pgina como mostra a imagem abaixo:

Depois, vamos adicionar um gridView. Congure o mesmo como mostra a imagem abaixo:

A verso 4.5 traz uma nova funcionalidade para os controles. Eles agora so fortemente tipados.
Perceba que no formView temos o itemType e dentro dele passo a classe ClienteModel. Estou
associando o meu objeto a ele.

Dentro do nosso formView temos umValidationSummary para validar os campos que esto usando
data annotation.

Voc pode usar essas variveis fortemente tipadas nas expresses de ligao de dados e obter todos os
benefcios da experincia de desenvolvimento do Visual Studio.


Na propriedadeInsertMethod, foi criado o mtodo para adicionar um novo cliente. Dentro dele temos o
mtodo TryUpdateModel. No esquea de colocar ele, se no vai dar error de validao. Faa conforme
mostra a imagem abaixo no code behind da pagina:

Nosso GridView tambm ser fortemente tipado. Na imagem acima no colocamos nada no page load
para carregar o grid. No mais necessrio. Crie um gridview com 2 link buttons como mostra a
imagem abaixo:


Perceba que ele tambm tem a propriedadeItemType para torna-lo fortemente tipado. Para carregar o
gridview, no usamos mais o DataSource. Temos que criar um mtodo para carregar o mesmo. Na
imagem acima, coloquei a propriedadeSelectMethod=CarregarGrid.

Eu criei esse mtodo na minha classe ClienteCrud e chamei ele na default.aspx.cs. Verique a imagem
abaixo na classe ClienteCrud.

Quando rodar o projeto, o Entity Framework vai gerar o banco de forma automtica.

Nosso projeto rodando. Verique se o seu projeto est igual ao da imagem abaixo:

Volte ao projeto e verique que o banco de dados foi criado:


Vamos voltar ao nosso gridView e colocar um comando
chamadoOnRowCommand:OnRowCommand=gridDados_RowCommand. Este evento ocorre quando
um boto clicado em um controle gridView.

Antes, coloque o noLinkButton1(excluir) do gridView o seguinte cdigo:OnClientClick=return


conrm(Deseja excluir ?). O link button vai car assim:

1 <asp:LinkButtonID="LinkButton1"runat="server"CausesValidation="False"
CommandName="Excluir"OnClientClick="returnconfirm('Desejaexcluir?')"
CommandArgument='<%#:Item.Id%>'Text="Excluir"></asp:LinkButton>

Adicionei um simples conrm do javascript. Se clicar em sim, ele vai excluir se no, ele cancela. Muito
simples.

Depois, v para o code behind e digite o seguinte cdigo:

Podemos ver na imagem acima que dentro do mtodo RowCommand do gridView, vamos acessar o
linkbutton dentro dele por meio doGridViewCommandEventArgs. Fiz um switch se o evento for
e.CommandName, que l na grid est como Excluir e Editar, ele faz determinada ao.
Oe.CommandArgument vai pegar o id de cada linha associada ao commandName.

Volte ao html. Vamos usar oAjaxControlToolkit para facilitar nossa vida. Mas voc pode usar jquery
dialog.

Quando clicar em editar, vai abrir uma modal para alterar os dados.

Faa conforme a imagem abaixo:


Criei um panel e dentro dele coloquei outro como cabealho. Tambm os controles, textbox e button
para adicionar ou cancelar.

Adicione este css:

1 <styletype="text/css">
2 .modalPopup{
3 background:#FFFFFF;
4 }
5 </style>

Vamos criar o mtodo para carregar a modal.

Na classe ClienteCrud crie um novo mtodo chamadoPesquisarPorId:

Volte ao code behind da pagina e adicione o mtodo:CarregarModale depois chame ele dentro do
RowCommand do gridView:


Volte a pagina html e adicione um mtodo onclick no button salvar que est dentro do panel:

1 <asp:ButtonID="btnSalvar"runat="server"Text="Salvar"
OnClick="btnSalvar_Click"/>

Depois adicione o seguinte bloco de cdigo dentro do mtodobtnSalvar_Click:

Terminamos nosso pequeno projeto. Fiz bem simples para melhor entendimento. Mas voc pode
melhora-lo conforme sua necessidade.

Uma delas validar os campos que esto dentro do modal.

O projeto nal rodando:


Alterando:

Dados alterados:

Deixem seus comentrios e dvidas com relao ao projeto.

Faa download do projeto: Criando CRUD com Asp.Net Web Forms 4.5
Related Posts:
1. Enviando anexo em e-mail com ASP.NET
2. Dica Converter um DataSet em XML
3. Como Programar com ASP.NET e C# Editora Novatec
4. Como Melhorar a Performance de WebSites .NET Editora Novatec

ASP.NET, C#, Visual Studio ASP.NET, ASP.NET MVC, Code First, CRUD, Data Annotations, Entity Framework, Entity
Framework 6, Visual Studio 2012, Visual Studio 2013, WebForm

Anterior Prximo
Introduo ao Hacking e aos Testes de Invaso Como saber se um aplicativo .NET 32 ou 64 bits
Editora Novatec

12 comentrios sobre Criando CRUD com Asp.Net Web Forms 4.5

Denilson disse:
21 de maro de 2014 s 14:44

Ficou timo, porm tive uns problemas para fazer aqui.


Por favor posta o arquivo.
Obrigado.

Responder

Felipe disse:
22 de maro de 2014 s 22:53

Tambm tive problemas para executar o exemplo. Seria muito interessante ter acesso ao fonte.

Responder

Paulo Henrique Menezes disse:


23 de maro de 2014 s 16:13

blz. Vou postar o fonte amanh. Mas qual tipo de problema vocs esto tendo ?

Responder

Paulo Henrique Menezes disse:


24 de maro de 2014 s 11:22

Pessoal, como pedido, segue o fonte:

https://github.com/binhoph/Exemplo

Responder

Marcos disse:
31 de maro de 2014 s 17:28

Boa tarde, utilizei esse tutorial para criar uma aplicaao web para a faculdade, porem o meu banco no
esta sendo criado. Como resolver? Fiz igual esta acima e o banco nao cria

Responder

Paulo Henrique Menezes disse:


1 de abril de 2014 s 20:23

Mas, da algum erro ? O que acontece ?



O projeto foi colocado pra download.
Baixa ele e verica.

Responder

junior disse:
1 de abril de 2014 s 20:54

Amigo, como caria uma busca nesse projeto vindo de um textbox?

Responder

Esteves disse:
10 de abril de 2014 s 17:43

Adicionei a using Model.Cliente;


Mesmo assim o , no reconhece.
public DbSet Clientes { get; set; }.

Fico no aguardo.

Obrigado!

Responder

Paulo Henrique Menezes disse:


10 de abril de 2014 s 23:54

voc tem que passar o model(sua classe cliente):

public DbSet Clientes { get; set; }.

Responder

Paulo Henrique Menezes disse:


10 de abril de 2014 s 23:58

Junio. basta criar o seguinte mtodo:

public IEnumerable Pesquisar(string campo)


{
var pesquisar = db.Clientes.rstOrDefault(x => x.nome.Contains(campo));
}

Chama esse mtodo no page load da pagina e coloca o texbox como parmetro.

Responder

Pedro disse:
1 de julho de 2014 s 12:51

No seria melhor usar um CRUD separado por 4 Camadas? Viso, Entidades, DAL, Controller? E um
CRUD um pouco mais completo tambm, utilizando mais entidades com associaes entre eles. Melhor
ensinar da forma correta. Abs.

Responder

Raphael Cardoso disse:


5 de julho de 2014 s 09:25

Ol Pedro, a ideia do Paulo Henrique transmitir conhecimento bsico sobre o CRUD com ASP.NET
WebForms 4.5 e no fazer um abordagem aprofundada e to pouco as melhores prticas.
Se voc estiver disposto a colaborar, bem vindo. Basta entrar em contato. Poder publicar artigos
com essa abordagem.
Ficaremos imensamente grato com sua colaborao com a comunidade e com o C# Brasil.

Abrao e bom estudo!

Responder

Deixe uma resposta


O seu endereo de e-mail no ser publicado. Campos obrigatrios so marcados com *

Comentrio

Nome *

E-mail *

Site

Publicar comentrio

Copyright 2017 Raphael Cardoso. Todos os direitos reservados. | Catch ResponsiveporCatch Themes

Vous aimerez peut-être aussi