none
Alert com ScriptManager RRS feed

  • Pergunta

  • Estou com um Problema em emitir um Alert com ScriptManager, estou fazendo da seguinte forma

    protected void fmCadCalibracao_ItemInserted(object sender, FormViewInsertedEventArgs e)
            {
                if (e.Exception == null)
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key1", "alert('Cadastro Efetuado com sucesso');", true);
                    fmCadCalibracao.ChangeMode(FormViewMode.Insert);                
                }
                else
                {
                    string error = e.Exception.InnerException.Message;
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key2", "alert('" + error + "');", true);                             
                }
            }

     Esta gerando o seguinte erro de Javascript 

    Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: Exception has been thrown by the target of an invocation.

    terça-feira, 27 de novembro de 2012 14:01

Respostas

  • Consegui resolver, adicionei o e.ExceptionHandled = true; alterei o método Alert também, ficou assim:

    protected void fmCadCalibracao_ItemInserted(object sender, FormViewInsertedEventArgs e)
            {
                try
                {
                    if (e.Exception == null)
                    {
                        this.Alert("Cadastro Efetuado com sucesso");
                        fmCadCalibracao.ChangeMode(FormViewMode.Insert);
                    }
                    else                
                        throw new Exception(e.Exception.InnerException.Message);                                                        
                }
                catch (Exception er)
                {
                    this.Alert(er.Message);
                    e.ExceptionHandled = true;
                }
            } 

    Método Alert

    public static class Notificar
        {
            public static void Alert(this System.Web.UI.Page page, string message)
            {
                ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "alertuser", "alert('" + message + "');", true);
            }
        }

    • Marcado como Resposta Pedro Ogm terça-feira, 27 de novembro de 2012 19:09
    terça-feira, 27 de novembro de 2012 19:08

Todas as Respostas

  • Oi Pedro,

    Tente trabalhar com esta função..

    Chamada:

    Alert(Page, " Dados Gravados com Sucesso!");
    //ou
    Alert(Page, "Erro: " + ex.Message);
    
    Função:

    public static void Alert(System.Web.UI.Page aspxPage, string message) { if (!aspxPage.ClientScript.IsStartupScriptRegistered("alertuser"))

    {

    aspxPage.ClientScript.RegisterStartupScript(typeof(Page), "alertuser", "<script>alert('" + message.Replace("\r","").Replace("\n","").Replace("\t","").Replace("'","") + "');</script>"); } }




    Thais Oliveira

    Analista Desenvolvedora

    • Sugerido como Resposta Thais Oliveira terça-feira, 27 de novembro de 2012 17:39
    terça-feira, 27 de novembro de 2012 17:38
  • Ainda continua não emitindo o Alert. Pelo debug do Chrome, no console, ele me mostra o seguinte erro:

    Uncaught Sys.WebForms.PageRequestManagerServerErrorException: Sys.WebForms.PageRequestManagerServerErrorException: Exception has been thrown by the target of an invocation.

    terça-feira, 27 de novembro de 2012 18:15
  • Pedro,

    Eu sugiro que vc debug seu código dentro de um try{} catch{} e procure pela causa raiz (ex.InnerException). Isso pode esclarecer melhor qual a causa raiz.

    Tente debugar, pegue a ex.InnerException e posta aqui.

    Vc já tentou rodar em outro browser?



    Thais Oliveira

    Analista Desenvolvedora

    terça-feira, 27 de novembro de 2012 18:38
  • Coloquei o código dentro do try catch e ainda continua com o problema independente do browser, o erro se da quando eu lanço um Exception do meu controller para a página web

    protected void fmCadCalibracao_ItemInserted(object sender, FormViewInsertedEventArgs e) { try { if (e.Exception == null) { this.Alert("Cadastro Efetuado com sucesso"); fmCadCalibracao.ChangeMode(FormViewMode.Insert); } else {

    throw new Exception(e.Exception.InnerException.Message); } } catch (Exception er) { if (!this.ClientScript.IsStartupScriptRegistered("alertuser")) { this.ClientScript.RegisterStartupScript(typeof(Page), "alertuser", "<script>alert('" + er.Message.Replace("\r", "").Replace("\n", "").Replace("\t", "").Replace("'", "") + "');</script>"); } } }


    terça-feira, 27 de novembro de 2012 18:49
  • Pedro

    No teu debug, ele sempre está caindo no else? Se sim, poste o valor da Propriedade Message. Na sua função de alert em si não tem nenhum erro.

    terça-feira, 27 de novembro de 2012 19:05
  • Consegui resolver, adicionei o e.ExceptionHandled = true; alterei o método Alert também, ficou assim:

    protected void fmCadCalibracao_ItemInserted(object sender, FormViewInsertedEventArgs e)
            {
                try
                {
                    if (e.Exception == null)
                    {
                        this.Alert("Cadastro Efetuado com sucesso");
                        fmCadCalibracao.ChangeMode(FormViewMode.Insert);
                    }
                    else                
                        throw new Exception(e.Exception.InnerException.Message);                                                        
                }
                catch (Exception er)
                {
                    this.Alert(er.Message);
                    e.ExceptionHandled = true;
                }
            } 

    Método Alert

    public static class Notificar
        {
            public static void Alert(this System.Web.UI.Page page, string message)
            {
                ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "alertuser", "alert('" + message + "');", true);
            }
        }

    • Marcado como Resposta Pedro Ogm terça-feira, 27 de novembro de 2012 19:09
    terça-feira, 27 de novembro de 2012 19:08
  • Pedro,

    Concordo com o Guilherme.

    Posta aí pra gente.


    Thais Oliveira

    Analista Desenvolvedora

    terça-feira, 27 de novembro de 2012 19:12
  • Maravilha!

    Thais Oliveira

    Analista Desenvolvedora

    terça-feira, 27 de novembro de 2012 19:14
  • A propriedade Message retornava "O campo nome é obrigatório", as validações estou fazendo na camada controller
    terça-feira, 27 de novembro de 2012 19:15