ASP .NET - Usando o NHibernate em uma aplicação Web III
Neste artigo veremos como usar o NHibernate em uma aplicação ASP .NET Web Forms. Vamos continuar definindo a interface da aplicação. |
Na segunda parte deste artigo foram realizadas as seguintes tarefas:
Agora sim já temos portanto tudo pronto para usar os recursos do NHibernate em nossa aplicação ASP .NET e realizar as operações CRUD relacionadas com as manutenção das informações da tabela Usuario.
Agora só falta definirmos a interface da aplicação que será a página ASP .NET Default.aspx e usar os recursos que criamos até aqui no projeto.
Neste momento a nossa solução deverá ter a seguinte estrutura:
Eu optei criar as classes e os arquivos de
configuração em um mesmo projeto e no mesmo local.
Fiz isso porque o projeto é bem simples e para tornar mais fácil a visualização da estrutura. Para projetos maiores é aconselhável criar pastas distintas para as classes e para os arquivos de configuração no mesmo projeto. Pode-se ainda criar projetos distintos para dividir a solução em camadas o que esta mais aderente as boas práticas. |
Então ao trabalho...
Selecione e abra a página Default.aspx e inclua a partir da toolbox nesta páginas os controles:
Conforme o leiaute da figura abaixo (os IDs dos controles estão definidos abaixo);
É importante definir a propriedade DatKeyNames do controle GridView como sendo igual a usuarioid;
Editando o controle GridView na opção Edit Columns deveremos configurar o controle conforme abaixo:
Agora temos que definir o código usado na página Default.aspx no arquivo code-behind Default.aspx.cs.
Primeiro definimos o namespace usado na página:
Imports
NHibernateA seguir definimos uma variável que representa a classe UsuarioRepositorio que implementa os métodos CRUD e usa a sessão NHibernate;
Dim
repositorio As UsuarioRepositorioAgora vamos definir o código em cada evento da página conforme a seguir:
No evento Load da página temos o código abaixo que chama a rotina carregaUsuarios:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load If Not IsPostBack Then carregaUsuarios() End If End Sub |
A rotina carregaUsuarios() possui o seguinte código:
Private Sub carregaUsuarios() repositorio = New UsuarioRepositorio() Dim resultado = repositorio.getAllUsuarios() gdvUsuarios.DataSource = resultado gdvUsuarios.DataBind() End Sub |
Neste código criamos uma instância da classe UsuarioRepositorio e usamos o método getAllUsuarios() para obter os usuários e exibir no GridView;
Ao ser executada o projeto teremos a exibição da página abaixo:
No evento SelectedIndexChanged temos o código que verifica se uma linha do grid foi selecionada e em caso positivo exibe os dados nos controles TextBox da página:
Protected Sub gdvUsuarios_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles gdvUsuarios.SelectedIndexChanged If gdvUsuarios.SelectedDataKey IsNot Nothing Then Label1.Text = String.empty txtId.Text = gdvUsuarios.SelectedDataKey.Value.ToString() txtNome.Text = gdvUsuarios.SelectedRow.Cells(2).Text txtLogin.Text = gdvUsuarios.SelectedRow.Cells(3).Text txtSenha.Text = gdvUsuarios.SelectedRow.Cells(4).Text txtPerfil.Text = gdvUsuarios.SelectedRow.Cells(5).Text txtEmail.Text = gdvUsuarios.SelectedRow.Cells(6).Text End If End Sub
|
O resultado pode ser visto na figura abaixo:
O código do evento Click do botão Incluir é mostrado a seguir. No código é criado uma instância de usuario e atribuído os valores informados na página web e em seguida usamos o método Add para incluir o usuário;
Protected Sub btnIncluir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnIncluir.Click Dim usuario As New Usuario() usuario.Nome = txtNome.Text usuario.Login = txtLogin.Text usuario.Senha = txtSenha.Text usuario.Perfil = txtPerfil.Text usuario.Email = txtEmail.Text repositorio = New UsuarioRepositorio() repositorio.Add(usuario) Label1.Text = "usuário incluído com sucesso." carregaUsuarios() End Sub
|
O resultado é exibido a seguir:
No evento Click do botão Alterar temos o código que cria uma nova instância de usuario e usa o método Update para alterar o registro selecionado:
Protected Sub btnAlterar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAlterar.Click Label1.Text = String.empty Dim usuario As New Usuario usuario.UsuarioId = Convert.ToInt32(txtId.Text) usuario.Nome = txtNome.Text usuario.Login = txtLogin.Text usuario.Senha = txtSenha.Text usuario.Perfil = txtPerfil.Text usuario.Email = txtEmail.Text repositorio = New UsuarioRepositorio() repositorio.Update(usuario) Label1.Text = "usuário alterado com sucesso." carregaUsuarios() End Sub
|
Abaixo vamos o resultado da alteração de um registro:
Para excluir um registro temos no evento CLick do botão Excluir o código abaixo que usa o método Remove passando o objeto usuario a ser excluído.
Protected Sub btnExcluir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnExcluir.Click Label1.Text = String.empty Dim usuario As New Usuario usuario.UsuarioId = Convert.ToInt32(txtId.Text) repositorio = New UsuarioRepositorio() repositorio.Remove(usuario) Label1.Text = "usuário excluído com sucesso." carregaUsuarios() End Sub
|
A exclusão do registro é mostrada na figura a seguir: (Podemos melhorar incluindo uma mensagem solicitando a confirmação da exclusão)
O código do botão Limpar é dado a seguir e apenas limpa o conteúdo dos controles da página. Ele é usado para incluir um novo usuário e para limpar os controles:
Protected Sub btnLimpar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnLimpar.Click txtId.Text="NOVO" txtNome.Text="" txtLogin.Text="" txtSenha.Text="" txtPerfil.Text="" txtEmail.Text = "" txtNome.Focus() End Sub
|
Dessa forma encerramos a série de 3 artigos onde mostramos como usar o NHibernate para realizar as operações CRUD de uma maneira mais consistente usando a sessão NHibernate de uma forma otimizado.
Podemos melhorar ainda mais criando mais recursos em nosso projeto mas isso é assunto para outro artigo...
Pegue o projeto completo aqui: NHibernateASPNET.zip (Sem as referência ao NHibernate)
Baixe os 3 artigos condensados no formato PDF : NHibernate_ASPNETPDF.zip
Eu sei é apenas NHibernate mas eu gosto...
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências: