OlĂĄ pessoal,
gostaria de ensinar e mostrar de forma prĂĄtica; como uma janela de forma modal
web, ou seja, na internet. Esse dia atrĂĄs estava precisando disso e nĂŁo tinha
achado da forma que necessitava.
à bem simples de fazer, mas até descobrir
como fazer eu penei um pouco e, para ajudar publico como artigo agora para quem
quiser. O problema de abrir de forma modal Ă© que caso necessite de alguma outra
coisa da janela anterior, tem que fechar a modal.
Requisitos:
Javascript
Linguagem C#.NET
Ferramenta de
desenvolvimento: Visual Studio .NET 2008
JavaScript
No meu caso, criei um arquivo .js e
importei na minha pågina .ASPX. Eu posso chamar a função criada no arquivo .js
de qualquer plataforma ou linguagem. No meu caso estou chamando dentro de um
componente chamado GridView. Segue o arquivo (ReferĂȘncia: Code 1)
/* ### função que
abre um popup de forma modal ### deve ser
passado a url, nome, tamanho e largura por exemplo
OnClick="dialogModal('pagina.html', 'nome', '620', '1024'); */ function
dialogModal(url, nome, nrTamanho, nrLargura) { eval(window.showModalDialog(url, nome,'Resizable:no; DialogHeight:'+nrTamanho+'px ; DialogWidth:'+nrLargura+'px; Edge:raised; Help:no; Scroll:no; Status:no;
Center:yes;')); //eval(caixa); } |
ReferĂȘncia: Code 1
GridView
Dentro do meu gridview, tenho as
colunas normais da tabela do banco e um botĂŁo imagem. (ReferĂȘncia: Code 2)
<asp:GridView ID="gridView" runat="server" AutoGenerateColumns="false" Width="100%" onrowdatabound="gridView_RowDataBound" HorizontalAlign="Center"> <Columns> <asp:TemplateField ItemStyle-Wrap="false"> <ItemTemplate> <asp:ImageButton ID="cmdImagemGrid"
runat="server"
ImageUrl="~/App_Themes/default/image/Doc.gif"></asp:ImageButton> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="Descricao" HeaderText="Crp" /> <asp:BoundField DataField="Sequencial" HeaderText="Passada" /> <asp:BoundField DataField="DataMovimento" HeaderText="Data Movimento" /> <asp:BoundField DataField="DataInicial" HeaderText="Inicio Transf." /> <asp:BoundField DataField="DataFinal" HeaderText="Fim Transf." /> <asp:BoundField DataField="TempoTransferencia" HeaderText="Tempo
Trans." /> <asp:BoundField DataField="QtdDocumentos" HeaderText="Qtd. Docs" /> <asp:BoundField DataField="QtdFalhas" HeaderText="Falhas" /> <asp:BoundField DataField="Responsavel" HeaderText="Digitalizado por" /> <asp:BoundField DataField="PassadaId" HeaderText="Passada" /> </Columns>
</asp:GridView> |
ReferĂȘncia: Code
2
O botĂŁo dentro do gridview estĂĄ separado, dentro da tag <ItemTemplate>. ReferĂȘncia Code 3.
<ItemTemplate> <asp:ImageButton ID="cmdImagemGrid" runat="server" ImageUrl="~/App_Themes/default/image/Doc.gif"></asp:ImageButton> </ItemTemplate> |
Code 3
CĂłdigo C#
Para pegar esse botĂŁo e adicionar uma
propriedade pra ele, tenho que criar o RowDataBound do componente GridView,
isso dentro cĂłdigo C#. ReferĂȘncia Code 4.
protected
void gridView_RowDataBound(object sender, GridViewRowEventArgs
e) { if
(e.Row.RowType == DataControlRowType.DataRow) { //adiciona
no botao de imagem o comando javascript dialogModal no onclickClient ImageButton
img = (ImageButton)(e.Row.FindControl("cmdImagemGrid")); img.OnClientClick = "dialogModal ('ControleQualidadeImagem.aspx"','pesquisa1',
'620', '1000')"; } } |
ReferĂȘncia: Code
4
Ă bem simples, verifiquei primeiro se o
tipo da linha era DataRow, depois usei o FindControl para achar o componente
chamado cmdImagemGrid e depois
adicionei a esse componente, o atributo OnClienteClick
passando o nome da função criada em JavaScript anteriormente.
Resultado Final
O resultado final Ă© uma janela Ă© a
mostrada a seguir. (ReferĂȘncia Imagem 1)
ReferĂȘncia:
Imagem 1
Espero ter
ajudado.
Qualquer dĂșvida
pode entrar em contato pelo comentĂĄrio do site.