Mostruário de fotos com Asp.net e C#(csharp)
Nesse artigo mostrarei como fazer um visualizador de imagem utilizando Asp.net com C# e Javascript. Poderá ser utilizado como demonstrativo de imagens de notícias, de catálogo de fotos entre outros.
Nesse artigo mostrarei como fazer um mostruário de fotos
utilizando asp.net com C# e javascript.
Em primeiro lugar, crie um banco de dados e adicione a tabela a seguir:
Create table Mostruario(ID int identity,
Titulo varchar(50),
Arquivo varchar(200),
Constraint pk_Mostruario primary key(ID))
Insira alguns registros no banco. Na coluna arquivo, insira um
caminho de uma imagem de preferência coloque assim:
/Imagem/Mostruario/Figura.jpg
No Default.aspx, arraste no Design da página um componente
do tipo Repeater, que está na aba Data da Toolbox.Agora vá para o Source da
página. Observe que o Repeater foi inserido desse jeito:
<asp:Repeater ID="rptCadernos" runat="server" OnItemDataBound="rptCadernos_ItemDataBound">
<ItemTemplate>
<div id="caderno" runat="server">
<asp:Image ID="img" runat="server"
ImageUrl=<%#Eval("arquivo") %> Width="100px" Height="100px" /><br />
<asp:Label ID="lbltitulo" runat="server" Text=<%# Eval("titulo") %>></asp:Label>
<br /><br />
<asp:HyperLink id="hlkAnterior" runat="server">Anterior</asp:HyperLink>
<asp:HyperLink id="hlkProximo" runat="server">Próximo</asp:HyperLink>
</div>
</ItemTemplate>
</asp:Repeater>
Repare que eu adicionei uma tag chamada ItemTemplate. Ela é
responsável em preencher os itens no repeater. Adicionei também três
componentes:
um componente do tipo imagem, na qual mostrará a imagem. Para
mostrá-la, será preenchido pelo comando Eval o dado do caminho da imagem que
está cadastrado no banco.Um componente do tipo label que virá do banco também
por meio da coluna titulo e dois componentes do tipo hyperlink, na qual serão
utilizados para a navegação das imagens.
Adicione também um componenate literal antes do Repeater e dê
o nome de litScript. É nele que será inserido o código javascript que iremos
criar dinamicamente.
Feito isso, pressione F7 para ir no code behind da página.Antes do PageLoad da página, declare
duas variáveis do tipo string e instancie um DataSet:
string strScript
= "";
string link = "";
DataSet ds = new
DataSet();
Crie um método que carregará a tabela Mostruario, como a seguir:
public void
CarregarRepeater()
{
string SQL = "Select * from Mostruario";
//Adapte com sua conexão
string conexao = "Data
Source=Uismar;Initial
Catalog=ArtigoDevMedia;Persist Security Info=True;User
ID=userImagem;Password=1010";
SqlConnection conn = new
SqlConnection(conexao);
SqlDataAdapter da = new
SqlDataAdapter(SQL,conn);
da.Fill(ds);
rptCadernos.DataSource
= ds.Tables[0];
rptCadernos.DataBind();
}
No PageLoad da página escreva o seguinte código:
protected void Page_Load(object sender, EventArgs
e)
{
CarregarRepeater();
}
Volte para o Design da página e clique no componente repeater.Nos eventos dele, dê um duplo clique no evento ItemDataBound. No codebehind da página ele criou a seguinte linha de código:
protected void
rptCadernos_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}
protected void
rptCadernos_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
/* Cria um
tipo HtmlGenericControl onde vai procurar a div
inserida no ItemTemplate do
Repeater*/
HtmlGenericControl div=(HtmlGenericControl)e.Item.FindControl("caderno");
if (e.Item.ItemIndex > -1)
{
//Cria um
tipo Hyperlink
HyperLink
hlkProximo = (HyperLink)e.Item.FindControl("hlkProximo");
HyperLink
hlkAnterior = (HyperLink)e.Item.FindControl("hlkAnterior");
/*cria duas string.Elas são responsáveis em capturar o ClientID(ID do
controle)na qual soma mais um no
caso de clicar no hyperlink
proximo e subtrai menos um no caso de clicar nohyperlink
anterior*/
string
LinkProximo = div.ClientID.Replace(e.Item.ItemIndex.ToString()
+ "_caderno", Convert.ToString(e.Item.ItemIndex
+ 1) + "_caderno");
string
LinkAnterior =
div.ClientID.Replace(e.Item.ItemIndex.ToString() + "_caderno",
Convert.ToString(e.Item.ItemIndex
- 1) + "_caderno");
//O NavigateUrl recebe a função javascript que está sendo criada
hlkProximo.NavigateUrl = "javascript:Fotos(" + LinkProximo + ")";
hlkAnterior.NavigateUrl = "javascript:Fotos(" + LinkAnterior + ")";
//Se o ItemIndex for zero significa que não há hyperlink anterior.
if
(e.Item.ItemIndex == 0)
hlkAnterior.Visible = false;
// Se o ItemIndex for igual ao ultimo registro não há hyperlink
proximo
if (e.Item.ItemIndex == ds.Tables[0].Rows.Count - 1)
hlkProximo.Visible
= false;
// Na primeira vez ele começa a montar o script
if
(strScript == string.Empty)
{
//Passa
o link da primeira imagem
link = div.ClientID;
strScript = "<script
type=text/javascript>";
strScript += "function Fotos(Div){"
;
}
Image img = (Image)e.Item.FindControl("img");
/*Passa o caminho da imagem.É preferível mapear no IIS
sua página, assim você passa a URL da imagem*/
img.ImageUrl = "http://localhost" + img.ImageUrl;
//Esconde o resto das imagens
strScript += "document.getElementById(" +
div.ClientID +
").style.display =
none;";
}
}
Complemente o PageLoad com o seguinte código, após a chamada do método CarregarRepeater():
// Se a div não for nula, ele mostra a imagem
strScript += "if (Div != null){document.getElementById(Div).style.display = block;}}";
strScript += " window.onload=function() { Fotos(" + link+");}";
/* A literal recebe o script montado dinamicamente
e a tag que fecha o
comando javascript*/
Execute a aplicação. O resultado será parecido com a imagem abaixo.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo