Mostrar um alert personalizado dentro do UpdatePanel !

Quem nunca precisou mostrar uma mensagem do tipo alert do JavaScript e não conseguia por estar usando o UpdatePanel do Ajax? Nesta dica eu mostro como mostrar uma mensagem personalizada com uma classe que herda a classe Page.

        Bom pessoal, eu venho com este artigo mostrar uma forma que achei para exibir uma mensagem do tipo alert do JavaScript. Só relembrando, quando tentamos dar uma mensagem desta forma:

Response.Write("<script>alert(Mensagem aqui! )</script>");

Dentro de um UpdatePanel do Ajax ocorre o seguinte erro:

 Para conseguir mostrar uma mensagem do tipo alert do JavaScript dentro de um UpdatePanel do Ajax, eu coloquei a mensagem em uma classe que herda a classe Page. Segue os scripts.

        /// <summary>
        /// encontra o primeiro objeto do tipo passado
        /// </summary>
        /// <param name="type">tipo à buscar</param>
        /// <returns>objeto encontrado ou null caso não encontrado</returns>
        private Control FindControlByType(Type type)
        {
            return FindControlByType(type, this);
        }

        /// <summary>
        /// encontra o primeiro objeto do tipo passado
        /// </summary>
        /// <param name="type">tipo à buscar</param>
        /// <param name="root">objeto à buscar</param>
        /// <returns>objeto encontrado ou null caso não encontrado</returns>
        private Control FindControlByType(Type type, Control root)
        {
            if (root.GetType() == type)
                return root;
            else
            {
                foreach (Control obj in root.Controls)
                {
                    Control returnObj = FindControlByType(type, obj);
                    if (returnObj != null)
                        return returnObj;
                }
            }
            return null;
        }
        /// <summary>
        /// Exibe messagebox - alert / ao navegante
        /// </summary>
        /// <param name="message">mensagem a ser exibida</param>
        public void ShowMessage(string message)
        {
            Control scriptPanel = FindControlByType(typeof(UpdatePanel)); //no atlas beta 2 só funciona com updatepanel
            if (scriptPanel == null) scriptPanel = this;
           
            string javascript = "alert();";
            message = message.Replace("\\", @"\\").Replace("", @"\").Replace("\"", "\\\"").Replace("\n", @"\n").Replace("\r", @"\r");
            ScriptManager.RegisterClientScriptBlock(scriptPanel, scriptPanel.GetType(), "messageBox", string.Format(javascript, message), true);
    }

    Com estes scripts acima, é só chamar a função ShowMessage passando a mensagem como parâmetro. E como no meu caso era dentro de um UserControl (.ascx), foi só fazer um casting da seguinte forma:

((BasePage)this.Page).ShowMessage("Aqui vai a mensagem!!.");

Bom, eu achei muito útil este script, por isso eu o postei, espero ter ajudado.

[]s

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados