Na segunda parte deste artigo definimos as funcionalidades da camada de acesso a dados e da camada de negócios. Agora vamos concluir definindo a camada de apresentação.
A nossa camada de apresentação será um projeto ASP .NET Web Forms onde iremos apresentar e manter as informações de clientes.
Recursos usados:
- Visual Studio Express 2012 for Web
- SQL Server 2012 Local DB
- ASP .NET Web Forms 4.5
Como o assunto do artigo já foi exaustivamente abordado, não vou me ater muito a certos detalhes para tornar o artigo mais simples e objetivo possível para aqueles que estão tendo o seu primeiro contato com um projeto em 3 camadas.
Definindo a estrutura da Camada de Apresentação – UI
Nossa camada de apresentação será bem simples e terá como objetivo mostrar como usar os recursos das camadas de negócio e da camada de acesso a dados.
Para tornar o código mais simples eu não vou me ater a validações, nem a um tratamento apurado de exceções – que é sempre um item obrigatório em uma aplicação de produção.
Vamos incluir um formulário web em nosso projeto Web Forms na camada UI. Selecione o projeto UI e clique em PROJECT e a seguir em Add New Item.
A seguir, selecione o template Web Form, informe o nome Default.aspx e clique no botão Add:
Selecione o formulário Default.aspx e clique na guia Design. No menu TABLE clique em Insert Table e defina uma tabela com 12 linhas e 2 colunas:
Agora, a partir da ToolBox, inclua o seguintes controles na página Default.aspx:
- TextBox – txtId
- TextBox – txtNome
- TextBox – txtEndereco
- TextBox – txtTelefone
- TextBox – txtEmail
- TextBox – txtObservacao
- Button – btnLocalizar
- Button – btnIncluir
- Button – btnAltera
- Button – btnExcluir
- Button – btnSair
- GridView – gvClientes
- Label – lblmsg
Disponha os controles na página conforme a figura abaixo:
Vamos executar o projeto Web para verificar a aparência da nossa página; mas antes precisamos definir o projeto de inicialização.
Clique com o botão direito sobre a solução na janela Solution Explorer e a seguir clique em Properties. Depois defina o Startup Project, conforme a figura abaixo:
Executando o projeto teremos o seguinte resultado:
A página web está sendo exibida sem nenhuma informação, pois ainda não implementamos o código para obter os dados do banco de dados.
Vamos fazer isso agora.
Exibindo informações na Camada de Interface – UI
Quando nosso projeto for executado, vamos exibir as informações dos clientes cadastrados no controle GridView – gvClientes – de forma que o usuário tenha uma visão dos clientes que já estão cadastrados.
Para fazer isso podemos usar o método ExibirTodos() da camada de negócio ClienteBLL. Podemos chamar o método no evento Load da página Default.aspx e carregar o controle GridView com os dados da tabela Clientes.
Então, no evento Load da página inclua o código a seguir:
Imports BLL Imports DTO Public Class _Default Inherits System.Web.UI.Page Dim _cliente As New ClienteBLL Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Try gvClientes.DataSource = _cliente.ExibirTodos() gvClientes.DataBind() Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub End Class
Observe que tivemos que declarar as referências aos projetos BLL e DTO na página web:
Imports BLL Imports DTO
Para poder acessar os métodos da classe ClienteBLL, criamos uma instância da classe : Dim _cliente As New ClienteBLL.
Depois, no interior de um bloco Try/Catch e no evento Load da página chamamos o método ExibirTodos() via instância da classe e atribuímos o resultado aoGridView:
gvClientes.DataSource = _cliente.ExibirTodos() gvClientes.DataBind()
O resultado pode ser visto na figura abaixo:
Localizando informações na Camada de Interface – UI
Agora vamos localizar as informações de um cliente pelo seu Id. Para fazer isso basta informar o código no campo Código e clicar no botão Localizar.
No evento Click do botão Localizar vamos chamar o método GetClienteId() da classe ClienteBLL que irá retornar um objeto Cliente com as informações do respectivo cliente.
Protected Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click Dim _cliente As New Cliente Dim codigo As Integer = Convert.ToInt32(txtId.Text) Try _cliente = _clienteBLL.GetClienteId(codigo) txtNome.Text = _cliente.nome txtEndereco.Text = _cliente.endereco txtTelefone.Text = _cliente.telefone txtEmail.Text = _cliente.email txtObservacao.Text = _cliente.observacao Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub
No código criamos uma instância da classe Cliente para receber as informações retornadas pelo método GetClienteId(), que chamamos passando o código informado na caixa de texto txtId.
A seguir, atribuímos os valores do objeto cliente a cada caixa de texto respectiva ao dado desejado.
Abaixo vemos o resultado para uma consulta:
Incluindo informações na Camada de Interface – UI
Para incluir informações de um cliente, temos que preencher os campos da página web informando o nome, telefone, endereço, e-mail e observações. O valor para o campo código não precisa ser preenchido, visto que o campo Id da tabela Clientes foi definido como do tipo Identity e será incrementando automaticamente.
Após informar os valores, basta clicar no botão Incluir.
O código do evento Click deste botão chama o método Incluir() da classe ClienteBLL conforme a seguir:
Protected Sub btnIncluir_Click(sender As Object, e As EventArgs) Handles btnIncluir.Click Dim _cliente As New Cliente Try _cliente.nome = txtNome.Text _cliente.endereco = txtEndereco.Text _cliente.telefone = txtTelefone.Text _cliente.email = txtEmail.Text _cliente.observacao = txtObservacao.Text _clienteBLL.Incluir(_cliente) Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub
Primeiro, criamos uma instância da classe Cliente para receber os valores informados nas caixas de texto da página e passamos o objeto _cliente para o métodoIncluir(). O método Incluir() define uma instrução SQL Insert Into para incluir as informações na tabela Clientes:
"INSERT INTO Clientes(Nome,Endereco,Telefone,Email,Observacao) values (@Nome,@Endereco,@Telefone,@Email,@Observacao)"
e chama o método CRUD da classe AcessoBD para efetivar a inclusão dos dados:
AcessoDB.CRUD(sql, parametrosNomes, parametrosValores)
Abaixo vemos um exemplo de execução bem sucedida:
Alterando informações na Camada de Interface – UI
Para alterar informações de um cliente temos que localizar o cliente que desejamos e alterar, exibindo suas informações na página Default.aspx nas caixas de texto.
A seguir, basta alterar o valor desejado, com exceção do campo código (que não permite alteração) e clicar no botão Alterar.
O código do evento Click deste botão chama o método Alterar() da classe ClienteBLL conforme a seguir:
Protected Sub btnAlterar_Click(sender As Object, e As EventArgs) Handles btnAlterar.Click Dim _cliente As New Cliente Try _cliente.Id = Convert.ToInt32(txtId.Text) _cliente.nome = txtNome.Text _cliente.endereco = txtEndereco.Text _cliente.telefone = txtTelefone.Text _cliente.email = txtEmail.Text _cliente.observacao = txtObservacao.Text _clienteBLL.Alterar(_cliente) Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub
Primeiro criamos uma instância da classe Cliente para receber os valores informados nas caixas de texto da página e passamos o objeto _cliente para o métodoAlterar().
O método Alterar() define uma instrução SQL Update Set para alterar as informações na tabela Clientes:
sql = "UPDATE Clientes SET Nome=@Nome, Endereco=@Endereco ,Telefone=@Telefone ,Email=@Email , Observacao=@Observacao Where Id=@Id"
e chama o método CRUD da classe AcessoBD para efetivar a inclusão dos dados:
AcessoDB.CRUD(sql, parametrosNomes, parametrosValores)
Abaixo vemos um exemplo de execução bem sucedida:
Excluindo informações na Camada de Interface – UI
Para excluir informações de um cliente, temos que localizar o cliente que desejamos excluir, exibindo suas informações na página Default.aspx nas caixas de texto. A seguir basta clicar no botão Excluir.
O código do evento Click deste botão chama o método Excluir() da classe ClienteBLL conforme a seguir:
Protected Sub btnExcluir_Click(sender As Object, e As EventArgs) Handles btnExcluir.Click Dim _cliente As New Cliente Try _cliente.Id = Convert.ToInt32(txtId.Text) _clienteBLL.Excluir(_cliente) Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub
Primeiro, criamos uma instância da classe Cliente para receber os valores informados nas caixas de texto da página e passamos o objeto _cliente para o métodoExcluir().
Para excluir um cliente, precisamos apenas do Id dele obtido do campo código na página Default.aspx em txtId.Text.
O método Excluir() define uma instrução SQL DELETE FROM para excluir as informações na tabela Clientes:
sql = "DELETE FROM Clientes Where Id=@Id"
e chama o método CRUD da classe AcessoBD para efetivar a inclusão dos dados:
AcessoDB.CRUD(sql, parametrosNomes, parametrosValores)
Abaixo vemos um exemplo de execução bem sucedida:
Pegue o projeto completo aqui: ASPNET_3Camadas.zip