Botão abrindo janela de forma modal


por Mauricio Junior em 1/1/2011 0



 Hoje gostaria de falar e mostrar como funciona a junção do javascript, linguagem C#.NET e plataforma ASP.NET com Toolkit. Com o toolkit da Microsoft, alguns comandos como <script>alert(“aaa”);</script> dentro do código c# deixaram de funcionar.

Tag: Visual Studio 2010, Linguagem C#.NET, Plataforma ASP.NET.

 O importante aqui é fazer funcionar o clique do botão para abrir uma tela modal, aquela que o usuário não consegue selecionar a tela de trás enquanto não fechar a primeira janela.

 Como a plataforma é do tipo ASP.NET, ou seja, web é necessário fazer a junção de javascript e método c#.net. Dentro da tela .ASPX ou do arquivo .MASTER é necessário usar a função janelaModal. (Code 1)

 

<script type="text/javascript" language="javascript">

    function janelaModal(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;'));

    }

</script>

 


Code 1

 Note que o código javascript não é um bicho de sete cabeças. É necessário enviar o endereço da URL (pode ser apenas o nome da página ou se estiver dentro de uma pasta indique-a adicionando a barra e a página .aspx). É necessário enviar também o nome da tela, tamanho e largura.

 Dentro da função, foi utilizado o comando showModalDialog definindo todos os parâmetros como nome, tamanho e largura. Podem ser definidos outros tipos como help, scroll, status e center; isso vai do seu critério.

 O próximo passo é gerar o botão na tela e acionar o clique que tem responsabilidade de chamar a função javascript (Code 1).
 
Botão Vermelho ou Verde


Imagem 1

 Note que na imagem 1, existem dois botões do tipo imagem. O nome técnico é IMAGE_BUTTON (um componente do próprio framework da Microsoft).  Code 2.

 

<asp:ImageButton ID="imgButtonTela1" runat="server"

                        onclick="imgButtonTela1_Click" />

 


Code 2

 Como na minha lógica de programação existe a possibilidade de ser uma bolinha verde ou vermelha, não coloquei o endereço da imagem ainda. Essa parte é feita no momento de execução. (Code 3)

 

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!Page.IsPostBack)

            {

                verificaDados();

            }

        }

 

        private void verificaDados()

        {

            bool _botaoVermelho = false;

 

            logica();

 

            if (_botaoVermelho)

                imgButtonTela1.ImageUrl = "Sinais/botaovermelho.png";

            else

                imgButtonTela1.ImageUrl = "Sinais/botaoverde.png";

        }

 


Code 3

 No Load da página, chamo outro método que verifica os dados para mostrar a imagem vermelha ou verde. Lembrando que não mostrei a parte click do botão ainda, essa parte (code3)  funciona apenas para mostrar a cor do botão.


Button Click


 A parte do clique do botão é simples e fácil. A ferramenta gera o método de clique e agora basta colocar uma linha utilizando o scriptManager. (Code 4)

 

protected void imgButtonTela1_Click(object sender, ImageClickEventArgs e)

        {

            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "NomedaJanela", "janelaModal('pagina.aspx','Sua','680','1020')", true);

        }

 


Code 4

 O ScriptManager.RegisterClientScriptBlock funciona mesmo que esteja utilizando o Toolkit da Microsoft, isto é, mesmo que tenha todos aqueles componentes da dll AjaxControlToolkit funciona. Explico isso porque os comandos <script> dentro do código c#.net deixaram de funcionar quando se usa o AjaxToolkit.

 O comando dentro do método chama a função criada anteriormente (Code 1) “janelaModal” passando os parâmetros esperados pelo método.
 Como eu gosto de mostrar o resultado final de todo trabalho feito até agora, segue uma imagem. (Imagem 2). Eu não posso mostrar o que tem na tela, mas posso mostrar que a tela abriu de forma modal.



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

Como fechar todos os forms de um aplicativo para dispositivo móvel
Dica para Auto Completar Código
Coalescing Operador C# ?? null
Dica ASP.NET para alerta e nova página
Filtrar o DataTable Dinamicamente
Convertendo e salvando imagens via código
TreeView usando Banco de Dados
Plataforma Web ou Windows Forms ?
Criando uma aplicação de uma maneira nova para melhor publicação
Vídeo - Criptografia e Descriptografia
Aplicativos para Dispositivos Móveis, Usando C#.NET com a ferramenta Visual Studio.NET e com Banco de Dados MySQL e SQL Server
VS 11 preparado para HTML 5
Vídeo sobre banco de dados
Criando Email Modelo no Mail - MacBook
Evento Brasil DotNet - gratuíto
Pagamento via celular
Artigo Criando RSS Xml para o Seu Próprio Site
As várias maneiras de mandar e-mail utilizando .NET
Sistema que faz busca no google
Public Interface
Virus: Provocando sua curiosidade
DateDiff com intervalos escolhidos por você
Método para ordenar DataTable
O Avanço do Blu-Ray no Brasil
HTMLEditorExtender com Imagem
Criando Teclas de Atalho no Windows Form
Litl um computador web
Criando Sections Customizados
Inside Xbox Live Game
Zune
Trabalhando com Session
Ext JS
Themas - Muito Simples
Mais um Windows Phone 7
Visual SourceSafe - Série 3