Abrindo Janela de Forma Modal


por Mauricio Junior em 1/1/2011 0

       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.

voltar   comente  subir

 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:

Comente (dê sua opinião):
Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Propaganda Microsoft - Vemos como será e não como é.
GridView Parte II
Windows Phone 7, nada como aprender vendo
Vírus - Full video Pamela Anderson
Seria o novo Windows Mobile 7 ?
Inserindo no Sql Server
Dados via Post no VS 2005
Windows Forms Application – Alterando Arquivo de Configuração Dinamicamente
Gravando Erros com Exception - Parte I
Resource e Internacionalização – Parte V Usando Visual Studio.NET 2005
Visual SourceSafe - Série 3
Mobilidade e Aplicativos Mobile
Sistema ASP 3.0 utilizando 3 camadas – Parte 1
Windows Phone 7 e DLNA
Certificação - Segunda Chance
Gerando uma dll com sistema web
Vídeo Sobre Atributes e String Builder com Visual Studio .NET 2005
Acessando banco de dados com pocket pc
Java J2EE – Primeiro Passo
Moving to Visual Studio 2010 e-Book
Sistema de Controle de Gasolina Mobile - iGas
Visual SourceSafe
Como utilizar CSS no VS 2003
GridView Parte III
O segredo de utilizar ModalPopupExtender
Aplicativo iCantada Free
Controle de peso mobile
Tudo Sobre DataGrid - (ASP.NET e C#)
Criptografando Senha
PDF Free - Programando para Windows Phone 7
Vídeo - Serviços do Windows Live
Trabalhando com Ipersonate e Web
Windows 7 funciona até no Mac
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
DataGrid Mobile