ASP .NET - Sistema para Imobiliária com Ajax - II


Neste artigo eu vou continuar a  criar um pequeno sistema web para imobiliária usando os recursos do ASP .NET e do AJAX.(Por enquanto sem Ajax...)

Você pode ver o site funcionando em : http://www.macoratti.net/imob/ (somente a opção padrão esta funcionando...)

O fluxo das páginas que iremos mostrar pode ser visto no esquema abaixo:

Já definimos a master page conforme a figura abaixo:

Quando a página for carregada desejamos preencher os controles dropdownlist e exibir alguns valores já selecionados , pois eu não preenchi a tabela com dados para todas as opções , então vou deixar selecionada a opção padrão para que seja exibidos os dados existentes.

Podemos usar o evento DataBound de cada um dos controles e pré-selecionar um valor que será exibido na página. O código esta descrito abaixo:

Protected Sub ddlEstados_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlEstados.DataBound

    ddlEstados.Items.FindByValue("8").Selected = True

End Sub

Protected Sub ddlMunicipios_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlMunicipios.DataBound

    ddlMunicipios.Items.FindByValue("16").Selected = True

End Sub

Protected Sub ddlNegocio_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlNegocio.DataBound

    ddlNegocio.Items.FindByValue("1").Selected = True

End Sub

Protected Sub ddlCategoria_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlCategoria.DataBound

   ddlCategoria.Items.FindByValue("2").Selected = True

End Sub

Protected Sub ddlQuartos_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlQuartos.DataBound

   ddlQuartos.Items.FindByValue("7").Selected = True

End Sub

Nota: O código acima foi usado apenas para mostrar uma das maneiras de você selecionar um valor padrão, mais a frente iremos removê-lo, pois desta forma a seleção de outro estado irá gerar um erro.

Quando o usuário fizer a sua seleção e clicar no botão OK devermos montar a requisição contendo os parâmetros referente a cada um dos itens dos controles dropdownlist, assim temos que incluir o seguinte código no evento Click do botão de comando btnOK:

Protected Sub btnOK_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnOK.Click

 

Dim codEst As Integer = ddlEstados.SelectedValue

Dim codMun As Integer = ddlMunicipios.SelectedValue

Dim codBai As Integer = ddlBairros.SelectedValue

Dim codNeg As Integer = ddlNegocio.SelectedValue

Dim quartos As String = ddlQuartos.SelectedItem.Text

Dim codCat As Integer = ddlCategoria.SelectedValue

Dim nquartos As Integer = 0

Dim url As String

If codEst = -1 Or codMun = -1 Or codBai = -1 Or codNeg = -1 Or codCat = -1 Then
      Response.Redirect(
"~/erro/erroGenerico.aspx")

Else

    url = "Imoveis.aspx?codEstado=" & codEst & "&codMunicipio=" & codMun & "&codNegocio=" & codNeg & "&codCategoria=" & codCat & "&codBairro=" & codBai

End If

 

If Not quartos.Equals("TODOS") Then

    nquartos = ddlQuartos.SelectedIndex

    url = url & "&codQuarto=" & nquartos

End If

 

Response.Redirect(url)

End Sub

No código acima primeiro eu estou definindo variáveis para receber cada um dos valores selecionados dos controles dropdowlist.

Se , por algum motivo ,  um dos dropdownlist chaves como o que exibe os estados, municipios, bairros , o negócio e a categoria não apresentar nenhuma seleção então redirecionamos para uma página de erro: Response.Redirect("~/erro/erroGenerico.aspx")

Nota: O tratamento de erros merecerá uma atenção mais detalhada mais adiante.

Em seguida montamos a url que conterá os parâmetros da requisição:

  url = "Imoveis.aspx?codEstado=" & codEst & "&codMunicipio=" & codMun & "&codNegocio=" & codNeg & "&codCategoria=" & codCat & "&codBairro=" & codBai

Esta é a url que contém todos os parâmetros com exceção da seleção do número de quartos.

Em seguida verificamos se NÃO foi selecionado a opção para TODOS os quartos; neste caso teremos que incluir a quantidade de quartos selecionada na url;

     nquartos = ddlQuartos.SelectedIndex

     url = url & "&codQuarto=" & nquartos

Por último redirecionamos para a url : Response.Redirect(url)

Você deve estar se perguntando como eu sei quais os parâmetros que tenho que passar ?

Bem, para isso temos que criar primeiro a página imoveis.aspx que irá exibir o resultado da seleção, e isto tem que ser planejado antes para que possamos definir os parâmetros que vamos usar.

Mas antes vejamos a página Default.aspx que exibe as propagandas dos imóveis...

Eu vou usar um controle DataList para exibir as imagens das propagandas na página Default.aspx.  Para isso temos que criar uma tabela chamada propaganda  com a seguinte estrutura:

A seguir cadastre as imagens da propaganda que deseja exibir:

Agora inclua um novo item no web site no menu WebSite opção Add New Item;

Na janela Add New Item selecione o Template Web Form e informe o nome Default.aspx marcando as opções : Place code in separate File e Select master page;

Agora a partir da ToolBox inclua um componente DataList na guia Data e selecionando o componente DataList abra a DataList Tasks e em Choose Data Source selecione <New data source>;

Na próxima janela selecione o objeto Access DataBase, aceite o nome padrão e clique em  Next>;

Na próxima janela informe o caminho do banco de dados Access que estamos usando;

Finalmente selecione a tabela Propaganda e marque os campos Código e Local e clique em Next> e Finish;

Agora temos que fazer um pequeno ajuste no DataList.. Selecione o controle e em   DataList Tasks clique na opção Edit Templates;

Em ItemTemplate remova os campos incluído por padrão e inclua uma tabela com uma linha e uma coluna e no seu interior inclua um controle Image a partir da ToolBox;

Clique no controle Image e em Edit DataBindings e a seguir defina a propriedade ImageUrl vinculada ao campo Local conforme a figura abaixo;

Para encerrar clique em End Template Editing. Agora defina as seguinte propriedades para o DataList na janela de propriedades (F4);

Pronto, agora ao ser chamada , a página Default.aspx irá exibir as imagens cadastradas conforme abaixo:

Poderíamos incluir no DataList , no ItemTemplate , um controle HiperLink para direcionar o usuário para uma página de detalhes das propagandas.

Agora voltemos para  a página Imoveis.aspx que irá exibir a seleção do usuário.

Acompanhe a terceira parte do artigo em : ASP .NET - Sistema para Imobiliária com Ajax - III  


José Carlos Macoratti