Escolar Documentos
Profissional Documentos
Cultura Documentos
Neste artigo eu vou mostrar como criar um pequeno sistema web para imobiliária usando os
recursos do ASP .NET e do AJAX.
Vamos supor que você possui uma pequena imobiliária e pretende oferecer o serviço de
venda, compra e aluguel de imóveis na internet. Como atingir o seu objetivo sem gastar
um centavo e usando recursos gratuitos ?
Pois bem , este artigo vai mostrar que você pode conseguir o seu objetivo usando a
ferramenta para desenvolvimento Visual Web Developer Express Edition(VWD) sem
precisar ser um guru no assunto. Vou dar um enfoque básico para iniciantes e desta forma
não vou me ater à criação de documentos de requisitos, camada de acesso a dados,
camada de negócio , etc. A idéia é por um sistema para funcionar o mais rápido possível ,
depois veremos como podemos aperfeiçoar o tal sistema. Primeiro o arroz com feijão
depois o camarão...
Ao final dos artigos teremos um sistema para consulta de imóveis na web onde você poderá
expor os imóveis de sua carteira imobiliária aos seus clientes.
Para iniciar vou mostrar a página inicial do site da imobiliária que eu já criei no VWD. Eu
usei um template free para o leiaute do site e algumas imagens ilustrativas. O link para
pegar os templates é http://www.freecsstemplates.org/ se você não aprovar o template que
eu estou usando fique a vontade para escolher outro;
Na página principal o cliente pode realizar a busca por imóveis selecionando o Estado ,
Município , Bairro , tipo de negócio , tipo de imóvel e quantidade de quartos
disponíveis.
Com isso em mente identificamos que o sistema vai precisar guardar informações relativas
a:
Estados
Municípios
Bairros
Tipos de negócio : Venda , Compra, Aluguel, etc.
Tipos de imóvel : casa , apartamento , chácara, terreno , etc.
Dados do imóvel : endereço, valor, garagens , estado , nome do proprietário ,
condições , etc.
Obs: Você pode efetuar os ajustes que julgar necessário para adaptar o modelo a sua
realidade.
Mas qual banco de dados vamos usar ?
Bem , a princípio poderíamos usar qualquer banco de dados relacional mas eu vou usar o
Microsoft Access por questão de simplicidade e por que pretendo hospedar o sistema em
meu servidor web e eu não tenho uma conta com suporte ao SQL Server. Ficamos então
com o Access. ( O Firebrid ou MySQL seriam boas escolhas também).
A seguir temos as tabelas criadas no Microsoft Access. (Você pode criar as tabelas também
no utilitário Visdata do VB6):
Não esqueça de incluir o banco de dados na pasta App_Data. Clique sobre a pasta e
selecione Add Existing Item e selecione o arquivo imobiliaria.mdb criado.
Preencha as tabelas com alguns dados apenas para poder usá-la na criação do nosso site
protótipo e exibir alguns dados, mais a frente iremos criar a área de administração do site
onde a manutenção destas tabelas poderá ser feita por você usando os recursos do sistema.
Abra o Visual Web Developer 2008 Express Edition e crie um novo web site com o nome
que você achar mais adequado, para o exemplo deste artigo eu vou usar o nome MacImob.
Para facilitar o desenvolvimento e dar um padrão visual ao site da imobiliária vamos usar o
recurso chamado Master Page que nada mais é do que criar um modelo de página que será
usado por todas as páginas do site.
Veja abaixo o modelo da master page que iremos usar no site da imobiliária:
O template que eu estou usando pode ser obtido no site http://www.freecsstemplates.org/.
Se você não gostar do meu leiaute pode alterar e usar o seu próprio leiaute.
Finalmente na janela Choose Data Source selecione o campo nomeEstado para ser exibido
no controle e codEstado para ser usado como valor da seleção;
Pronto já temos o ddlEstados pronto para exibir os estados cadastrados na tabela Estados.
- A seguir em Choose Data Source selecione <New data source...> e clique em OK;
- Na janela Configure Data Source clique no botão Browse e selecione o banco de dados
Imobiliaria.mdb na pasta App_data;
Em seguida selecione de onde deverá sair o parâmetro para estipular a condição. No nosso
caso o parâmetro virá do primeiro controle dropdownlist - ddl1;
ddlBairros
data source => name = dsNegocio
ddlNegocio
data source => name = dsCategorias
ddlCategoria
s
ddlQuartos
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...)
O fluxo das páginas que iremos mostrar pode ser visto no esquema abaixo:
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:
End Sub
End Sub
End Sub
ddlCategoria.Items.FindByValue("2").Selected = True
End Sub
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:
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.
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
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;
Na próxima janela informe o caminho do banco de dados Access que estamos usando;
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;
RepeatColumns = 3
RepeatDirection = Vertical
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
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...)
O fluxo das páginas que iremos mostrar pode ser visto no esquema abaixo:
Obs: Lembrando que estamos seguindo o 'caminho feliz' usando os recursos básicos da
ASP .NET para por o site para funcionar o mais rápido possível.
Neste artigo vou mostrar como construir a página imoveis.aspx que pode ser vista na
imagem a seguir:
Esta página é responsável por exibir o resultado da seleção de imóveis feita pelo usuário na
página principal; na verdade , a pesquisa vai estar sempre disponível pois foi definida na
master page.
A página imoveis.aspx é chamada a quando o usuário clica no botão OK e url que aciona a
página imoveis.aspx pode ter duas construções:
1 - O valor padrão onde serão exibidos imóveis com qualquer quantidade de quartos:
"Imoveis.aspx?codEstado=" & codEst & "&codMunicipio=" & codMun & "&codNegocio=" & codNeg &
"&codCategoria=" & codCat & "&codBairro=" & codBai
"Imoveis.aspx?codEstado=" & codEst & "&codMunicipio=" & codMun & "&codNegocio=" & codNeg &
"&codCategoria=" & codCat & "&codBairro=" & codBai & "codQuarto=" & nquartos
Neste caso a página imóveis pode estar recebendo os seguintes parâmetros via url:
Sendo que a o parâmetro codQuarto pode ser passado ou não, dependendo da opção que o
usuário fez na pesquisa.
Dessa forma temos que criar duas fontes de dados que devem ser selecionadas de forma
dinâmicas, e, cada uma delas deverá esperar os parâmetros definidos.
Selecione o componente gridview e abra a menu GridView Tasks; em Choose Data Source
selecione a opção <New DataSource..>;
Na próxima janela selecione a opção Query Builder, pois vamos criar a nossa instrução SQL
usando as tabelas Imoveis e Bairros conforme a figura abaixo:
Marque os campos da tabela Imoveis e Bairros conforme indicado, e, para os parâmetros
que vamos receber devemos indicar na coluna Filter o sinal =? que é o usado para o Access
para indicar um parâmetro; (No SQL Server a indicação é feita assim =@nomeparametro)
Você pode ver na parte inferior a instrução SQL ser montada. A instrução final é a seguinte:
Agora temos que definir a origem e o nome dos parâmetros que estamos esperando, clique
em Next> e na janela Define Parameters siga as seguintes etapas para realizar esta
definição:
1- Em Parameters selecione o parâmetro que deseja definir;
4- Após repetir o processo para todos os parâmetros clique em Next> e a seguir clique em
Finish;
Bem, como temos dois datasource como sabemos qual devemos usar em tempo de
execução ?
Para fazer isso teremos que definir no evento Load da página imoveis.aspx o seguinte
código:
O código é bem simples, ele carrega o datasource verificando se estamos recebendo via url
o parâmetro codQuarto atribuindo de forma dinâmica o datasource a propriedade
DataSourceID do GridView.
Note que além dos campos definidos no datasource Imoveis temos um campo Detalhes que
é do tipo HyperlinkField. Este campo irá ser visualizado como um link no GridView e
quando for clicado deve direcionar para uma outra página.
DataNavigateUrlFields : Codigo
DataNavigateUrlFormatString : ~/detImoveis.aspx?imov={0}
DataTextField : referencia
Nosso objetivo é exibir na coluna Foto uma imagem indicando se existem ou não fotos para
o respectivo imóvel. Após definir o componente image no templateField Foto vamos usar o
evento RowDataBound do gridview para verificar se o imóvel possui ou não foto e assim
exibir uma imagem correspondente visto que temos duas imagens :
Nota: O evento RowDataBound ocorre quando uma linha de dados é vinculada aos
dados em um controle GridView;
Protected Sub gdvImoveis_RowDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.GridViewRowEventArgs) Handles gdvImoveis.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then
Dim img As Image = CType(e.Row.FindControl("image2"), Image)
Dim ok As Integer = CType(e.Row.Cells(7).Text, Integer)
Select Case ok
Case 0
img.ImageUrl = "~/images/sfoto.gif"
img.Visible = True
Case 1
img.ImageUrl = "~/images/cfoto.gif"
img.Visible = True
End Select
e.Row.Cells(8).ColumnSpan = 2
e.Row.Cells(7).Visible = False
End If
End Sub
Neste código definimos a variável img como do tipo image obtendo o valor do controle
image2 definido no templateField;
Definimos a variável ok como sendo do tipo integer e com o valor do campo da coluna 7
que é o campo foto. O campo foto e do tipo Texto e possui os valores 0 para indicar sem
foto e 1 para indica com foto;
Verificamos o valor da variável ok que possui o valor do campo foto (coluna 7) e conforme
o valor atribuímos a imagem , que esta na pasta /images, a propriedade ImageUrl do
controle Image2;
E com isso temos a nossa página imoveis.aspx perfeitamente funcional. A próxima etapa
será mostrar os detalhes dos imóveis na página detImoveis.aspx onde iremos exibir as
fotos e informações do imóvel selecionado.
Acompanhe a quarta parte do artigo em : ASP .NET - Sistema para Imobiliária com Ajax -
IV
O fluxo das páginas do site da imobiliária pode ser visto no esquema abaixo:
Obs: Lembrando que estamos seguindo o 'caminho feliz' usando os recursos básicos da
ASP .NET para por o site para funcionar o mais rápido possível.
DataNavigateUrlFields : Codigo
DataNavigateUrlFormatString : ~/detImoveis.aspx?imov={0}
DataTextField : referencia
A seguir inclua um componente DataList que iremos usar para exibir as imagens dos
imóveis na página definindo para o controle as seguintes propriedades :
RepeatDirection = Horizontal;
RepeatColumns = 2
Selecione o componente DataList e abra a menu DataList Tasks; em Choose Data Source
selecione a opção <New DataSource..>;
Na próxima janela selecione a opção Query Builder, pois vamos criar a nossa instrução SQL
usando a tabela Fotos conforme a figura abaixo:
Clique em OK e você verá na janela do existente o resultado do SQL montado. Clique em
Next>;
Na janela Define Parameters vamos definir a origem e o nome dos parâmetros que
estamos esperando. A definição deve ser feita conforme a figura abaixo:
1- Em Parameters
selecione o
parâmetro que
deseja definir;
2- Na combobox
Parameter Source
informe :
QueryString
indicando que o
parâmetro será
recebido via url;
3- Em
QueryStringField
informe o nome do
parâmetro conforme
definido;
4- A seguir clique
em Next> e a seguir
clique em Finish;
Com isso já temos o DataList configurado para exibir as fotos dos imóveis a partir da tabela
Fotos. Lembrando que na tabela estamos armazenando somente o caminho e nome da
foto. Esta estratégia tem a vantagem de ser mais simples e de guardar menos informações
no banco de dados mas tem como desvantagem o fato que você tem que gerenciar as
imagens. Dependendo da situação e para um banco de dados SQL Server o recomendável
seria armazenar a imagem no banco de dados.
Na próxima janela selecione a opção Query Builder, pois vamos criar a nossa instrução SQL
usando a tabela Imoveis conforme a figura abaixo:
Na janela Define Parameters vamos definir a origem e o nome dos parâmetros que
estamos esperando. A definição deve ser feita conforme a figura abaixo:
1- Em Parameters
selecione o parâmetro
que deseja definir;
2- Na combobox
Parameter Source
informe : QueryString
indicando que o
parâmetro será
recebido via url;
3- Em
QueryStringField
informe o nome do
parâmetro conforme
definido;
4- A seguir clique em
Next> e a seguir clique
em Finish;
A seguir selecione o controle e clique em Edit Templates para fazer os ajustes nos
campos :
- Em ItemTemplate inclua um
controle TextBox e defina sua
propriedade Multiline igual a
True;
Encerre a edição e pronto já temos a página detImoveis.aspx pronta para exibir todas as
informações que desejamos.
A próxima etapa será mostrar uma imagem em tamanho maior(zoom) da imagem
selecionada pelo cliente na página detImoveis.aspx.
Acompanhe a quinta parte do artigo em : ASP.NET -Sistema para Imobiliária com Ajax -
V
Continuando a criação do site da imobiliária irei mostrar como criar a página para exibir os
detalhes dos imóveis. Esta página irá exibir uma foto ampliada a partir de uma seleção
feita pelo usuário na página de fotos do imóvel - detImoveix.aspx.
O fluxo das páginas do site da imobiliária pode ser visto no esquema abaixo:
Obs: Lembrando que estamos seguindo o 'caminho feliz' usando os recursos básicos da
ASP .NET para por o site para funcionar o mais rápido possível.
Vamos fazer com que ao escolher uma foto e clicar sobre ela a mesma seja aberta em
outra janela ampliada.
No artigo anterior eu mostrei como criar a página detImoveis.aspx para exibir as fotos dos
imóveis. Usamos um controle DataList para isso.
Apenas para recordar página detImoveis.aspx possui o leiaute exibido na figura abaixo:
A página possui os controles : Label, DataList e FormView que serão usados para exibir as
informações. (Existem outras formas de se obter o mesmo resultado)
Temos então que chamar a página exibeFoto.aspx passando o código da foto que
desejamos abrir. Uma maneira bem simples de fazer isso é incluir no código da página
detImoveis.aspx um comando <a href></a> envolvendo a imagem do imóvel que esta no
itemTemplate.
Veja abaixo um trecho de código onde eu estou destacando o código que efetua esta
tarefa:
.......
<asp:DataList ID="DataList1" runat="server" DataKeyField="Código"
DataSourceID="AccessDataSource1" RepeatDirection="Horizontal" Width="100%"
Height="100%" RepeatColumns="2">
<ItemTemplate>
<table class="style5">
<tr><td>
<a href='exibeFoto.aspx?fotoID=<%# Eval("código")%>'
target="_blank">
<asp:Image ID="Image2" runat="server" Height="160px"
ImageUrl='<%# Eval("Foto") %>' Width="160px" />
</a>
</td></tr>
</table>
<asp:Label ID="Label3" runat="server" Text='<%# Eval("descricao") %>' />
<br /><br />
</ItemTemplate>
</asp:DataList>
..........
Vamos então preparar a página exibeFoto.aspx para receber este parâmetro e exibir a
foto. Vejamos como criar a página e definir os seus detalhes.
Clique com o botão direito do mouse sobre o nome do projeto e selecione Add New Item,
selecionando a seguir o template Web Form e informando o nome Imoveis.aspx e clique
no botão Add; (Não esqueça de marcar a opção Place code in separate file). Nota: Não
vamos marcar a opção Select Master Page;
Defina seguinte instrução SQL : SELECT Código, Foto, codImovel FROM Fotos
WHERE (Código=?)
Clique em Next> e defina a fonte do parâmetro como QueryString e defina o nome fotoID
para o mesmo; desta forma o parâmetro deverá vir de outra página e terá o nome igual a
fotoID;
Pois é exatamente isso que será passado para a página exibeFoto.aspx quando o usuário
clicar em uma imagem na página detImoveis.aspx. Lembre-se que definimos uma
referência igual a: <a href='exibeFoto.aspx?fotoID=<%# Eval("código")%>'
target="_blank">
Agora em ItemTemplate inclua uma tabela com duas linhas e na primeira linha inclua um
componente Image alterando o seu tamanho conforme a figura abaixo;
exibeFoto.aspx
Com isso já podemos exibir a foto ampliada e retornar para página detImoveis.aspx.
Com isso concluímos a primeira parte da nossa Imobiliária virtual usando o caminho feliz ,
com rapidez e digitando pouco código apenas usando os controles e assistente do Visual
Web Developer 2008 Express Edition.
Não gastamos um centavo e temos um site funcional que pode até ser usado por uma
pequena imobiliária.
A segunda fase será mostrar a área de administração da imobiliária onde irei criar as
páginas para cadastrar os imóveis, as fotos , os bairros, as cidades , enfim, os dados
necessários para por a imobiliária para funcionar.
Aguarde o próximo artigo : ASP .NET - Sistema para Imobiliária com Ajax VI (ainda inativo)