none
Enviar uma Messagem para o usuario pelo codigo C# RRS feed

  • Pergunta

  • Eu tenho um codigo pronto numa tela de cadastro no meu projeto ASP.NET 4.0

    Numa determinada parte desse meu codigo eu preciso enviar uma messagem para o usuario e depois recuperar qual opção ele escolheu.

    Estou colocando logo abaixo como ficaria meu codigo. Basta agora colcocar ele em codigo behind C#.

    Messagem "Ola. Item selecionado esta em falta, deseja cadastrar assim mesmo ?"

    Na messagem acima vai parecer 2 opções "OK" e "CANCELAR".

    Logo abaixo eu vou recuperar o que o usuario escolheu.

    Se usuario clicou em "CANCELAR"

    {

       Mensagem "Usuario clicou em Cancelar"

    }

    Else

    {

       Mensagem "Usuario clicou em "OK"

    }

    Se alguem sabe como resolver esse problema. Favor postar o codigo behind C# logo abaixo.

    Favor não colocar links de exemplos pois eu ja pesquisei e não encontrei nada que possa ter me ajudado.

    Então se alguem tem um tempinho para perder comigo e me ajudar eu agradeço.

    Muito Obrigado.

    terça-feira, 23 de abril de 2013 16:11

Todas as Respostas

  • Use o código abaixo,

    RegisterStartupScript("alerta", "<script> javascript:window.alert('Rotina em desenvolvimento!'); </script>");                       

    Isso vai registrar um alert para o postback da página que você está acessando.

    Abraço


    (Se a isto ajudou a resolver o problema, por favor, marque como resposta)

    terça-feira, 23 de abril de 2013 16:20
  • 1 ) O codigo de alerta cima esta incorreto pois fica marcado como incorreto na minha pagina asp.cs

    2 ) A messagem tem que ter OK e Cancelar conforme descrevi acima

    3 ) Depois eu tenho que recuparar o que o usuario clicou conforme descrevi acima.

    Favor analisar o que eu preciso para completar meu Projeto.

    Quem puder me ajudar eu agradeço.

    Obrigado.

    terça-feira, 23 de abril de 2013 16:46
  • Pegando o exemplo que o amigo Wellington tinha dado uma vez, é só adaptar para o seu caso.

    Você pode fazer assim:

    <form id="form1" runat="server">
        
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            <input type="hidden" name="OK" id="OK" />
        </form>


    No evento click do seu botão você vai criar um script que fará a pergunta e redirecionará para a sua página passando a resposta por querystring:

    protected void Button1_Click(object sender, EventArgs e)
            {
                ClientScript.RegisterStartupScript(this.GetType(), "",
                            "<script type=\"text/javascript\">" +
                            "var result = confirm(\"Confirma?\");" +
                            "if(result){"+
                            "document.getElementById(\"OK\").value =\"s\";"+
                            "document.forms[\"form1\"].submit();"+
                            "}"+
                            "</script>"
                            );
            }

    Depois no form load você recupera o valor e pode fazer o que deseja (gravar ou chamar uma função que faça isso):

    protected void Page_Load(object sender, EventArgs e)
            {
                //clicou em ok
                if (Request["OK"] =="s")
                {
                    //sua logica de continuacao
                }
            }

    Se ajudou, por favor, clique em marcar como resposta e ajude o fórum.


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    • Sugerido como Resposta EvandroAS terça-feira, 23 de abril de 2013 16:47
    terça-feira, 23 de abril de 2013 16:47
  • Evandro Aguiar

    1) O codigo agora esta certo

    2) Messangem esta aparecendo perfeitamente com as 2 opções.

    3) So esta faltando tratar o que o usuario clicou. Eu coloquei logo abaixo da mensagem o codigo que você postou mas so esta entrando em Cancelar. Nunca entra quando clico OK.

    ClientScript.RegisterStartupScript(this.GetType(), "",
                           
    "<script type=\"text/javascript\">" +
                           
    "var result = confirm(\"Confirma?\");" +
                           
    "if(result){"+
                           
    "document.getElementById(\"OK\").value =\"s\";"+
                           
    "document.forms[\"form1\"].submit();"+
                           
    "}"+
                           
    "</script>"
                           
    );
     if (Request["OK"] =="s")
               
    {
                   
    //Aqui não entra se eu clico em OK ou Cancelar
               
    }
                else

               {

                   //So entra aqui, não importa a opção que eu escolher

               }

    Bom so esta faltando isso para eu finalizar esse post.

    Fico no aguardo.

    Muito Obrigado.

    terça-feira, 23 de abril de 2013 17:18
  • Evandro Aguiar

    1) O codigo agora esta certo

    2) Messangem esta aparecendo perfeitamente com as 2 opções.

    3) So esta faltando tratar o que o usuario clicou. Eu coloquei logo abaixo da mensagem o codigo que você postou mas so esta entrando em Cancelar. Nunca entra quando clico OK.

    ClientScript.RegisterStartupScript(this.GetType(), "",
                           
    "<script type=\"text/javascript\">" +
                           
    "var result = confirm(\"Confirma?\");" +
                           
    "if(result){"+
                           
    "document.getElementById(\"OK\").value =\"s\";"+
                           
    "document.forms[\"form1\"].submit();"+
                           
    "}"+
                           
    "</script>"
                           
    );
     if (Request["OK"] =="s")
               
    {
                   
    //Aqui não entra se eu clico em OK ou Cancelar
               
    }
                else

               {

                   //So entra aqui, não importa a opção que eu escolher

               }

    Bom so esta faltando isso para eu finalizar esse post.

    Fico no aguardo.

    Muito Obrigado.

    Caso a resposta seja "OK" o valor retornado será um "S". Se não está entrando na condição é porque o valor está diferente. Faça um teste acima da linha do IF :

    string teste = Request["OK"];

    E veja o que está retornando. Pois aqui eu testei e funcionou normalmente. 
    Você lembrou de colocar Hidden Field no form ? 

    <input type="hidden" name="OK" id="OK" />


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh



    • Editado EvandroAS terça-feira, 23 de abril de 2013 17:34
    terça-feira, 23 de abril de 2013 17:32
  • Evandro Aguiar

    Coloquei conforme você postou para verificar o que esta me retornando.

    string teste = Request["OK"];

    E o teste esta pegando Null o qual esta no Resquest["OK"] que tambem esta Null.

    Não sei como resolver.

    Obrigado pela ajuda. Espero que agora você consiga resolver meu problema.

    Fico no aguardo.

    Obrigado.

    terça-feira, 23 de abril de 2013 18:08
  • Evandro Aguiar

    Coloquei conforme você postou para verificar o que esta me retornando.

    string teste = Request["OK"];

    E o teste esta pegando Null o qual esta no Resquest["OK"] que tambem esta Null.

    Não sei como resolver.

    Obrigado pela ajuda. Espero que agora você consiga resolver meu problema.

    Fico no aguardo.

    Obrigado.

    Ele está null a primeira vez que entra no Page Load não é ? Ou depois que o clica no OK da janela ainda continua NULL ?
    Para recuperar, coloque assim, por favor:

    if(Request["OK"] != null)
    {
                if (Request["OK"] =="s")
                {
                    //Aqui não entra se eu clico em OK ou Cancelar
                }
                else
               {
                   //So entra aqui, não importa a opção que eu escolher
    
               }
    }


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    terça-feira, 23 de abril de 2013 18:46
  • Evandro Aguiar

    Esse evento não esta no page_load.

    Todo o codigo do esta no evento click do buton_click junto com a messagem.

    Entendeu agora ?

    Se eu colocar como acima vai resolver ?

    Fico no aguardo.

    Obrigado.

    terça-feira, 23 de abril de 2013 18:55
  • Evandro Aguiar

    Esse evento não esta no page_load.

    Todo o codigo do esta no evento click do buton_click junto com a messagem.

    Entendeu agora ?

    Se eu colocar como acima vai resolver ?

    Fico no aguardo.

    Obrigado.

    Sim, teria que ser no Page Load. Se cair dentro da condição no IF você chama o evento que vai fazer a inserção. Ou seja o seu método de inserir não vai estar no buton_click. 

    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    terça-feira, 23 de abril de 2013 19:34
  • Mas eu não posso tirar essa condição de inserir do buton_click pois alem da inserção de dados tem outras verificações que so deve aparecer na inclusão dos dados. Então eu não posso mudar isso.

    O que eu pensei em fazer e jogar o codigo acima em outro evento  e chamar ele.

    Tem 3 opções mas não sei se vai funcionar, quais dela você acha me vai me atender.

    Colocar meu codigo abaixo numa das 3 opções abaixo:

    if(Request["OK"] != null)
    {
               
    if (Request["OK"] =="s")
               
    {
                   
    //Aqui não entra se eu clico em OK ou Cancelar
               
    }
               
    else
              
    {
                  
    //So entra aqui, não importa a opção que eu escolher

              
    }
    }

    1) Depois da mensagem que esta no meu buton_click eu não colocar nada. E colocar essa condição no meu page_load, mas não sei se depois da mensagem vai passar pelo meu page_load.

    2) Depois da mensagem que esta no meu button_click eu não colocar nada. E colocar essa condição no meu FormView1_DataBound, mas não sei se depois da mensagem vai passar pelo meu FormView1_DataBound.

    3) Depois da mesagem que esta no  meu Buton_click eu colocar uma função (exemplo funcion_verifica). E como tem a função logo abaixo vai aparecer o codigo da função e nessa função eu colocar essa condição.

    Bom Evandro Aguiar... eu sei que falta pouco, mas não sei como resolver..e obrigado pela sua ajuda.

    Espero que você possa me ajudar a resolver de vez esse problema.

    Aguardo seu retorno.

    Obrigado.

    terça-feira, 23 de abril de 2013 19:49
  • Mas eu não posso tirar essa condição de inserir do buton_click pois alem da inserção de dados tem outras verificações que so deve aparecer na inclusão dos dados. Então eu não posso mudar isso.

    O que eu pensei em fazer e jogar o codigo acima em outro evento  e chamar ele.

    Tem 3 opções mas não sei se vai funcionar, quais dela você acha me vai me atender.

    Colocar meu codigo abaixo numa das 3 opções abaixo:

    if(Request["OK"] != null)
    {
               
    if (Request["OK"] =="s")
               
    {
                   
    //Aqui não entra se eu clico em OK ou Cancelar
               
    }
               
    else
              
    {
                  
    //So entra aqui, não importa a opção que eu escolher

              
    }
    }

    1) Depois da mensagem que esta no meu buton_click eu não colocar nada. E colocar essa condição no meu page_load, mas não sei se depois da mensagem vai passar pelo meu page_load.

    2) Depois da mensagem que esta no meu button_click eu não colocar nada. E colocar essa condição no meu FormView1_DataBound, mas não sei se depois da mensagem vai passar pelo meu FormView1_DataBound.

    3) Depois da mesagem que esta no  meu Buton_click eu colocar uma função (exemplo funcion_verifica). E como tem a função logo abaixo vai aparecer o codigo da função e nessa função eu colocar essa condição.

    Bom Evandro Aguiar... eu sei que falta pouco, mas não sei como resolver..e obrigado pela sua ajuda.

    Espero que você possa me ajudar a resolver de vez esse problema.

    Aguardo seu retorno.

    Obrigado.

    Amigo você não vai tirar todas as validações nem nada do tipo só vai dividir em 2 partes. A primeira será no clique do botão que perguntará ao usuário se ele realmente quer gravar, se ele disser que sim você chama a "2º parte" que pode ser uma função por exemplo, que vai fazer o resto. Entendeu ?

    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    terça-feira, 23 de abril de 2013 19:53
  • Então Evandro Aguiar.

    Esse Buton esta dentro do meu formview1 o qual ja salva automaticamente os dados:

    <

    asp:ButtonID="ButtonSalvar"runat="server"CommandName="Insert"Text="Salvar"SkinID="ButtonSalvar"

               

    OnClick="ButtonSalvar_Click"/>

    terça-feira, 23 de abril de 2013 20:29
  • Evandro Aguiar colcoquei meu Button acima.

    Conforme ja tinha comentado ele esta dentro do meu formview1 o qual ja salva automaticamente os dados.

    Agora não sei como dividir em 2 etapas este processoo como vc esta me orientando.

    Se vc puder me ajudar eu agradeço.

    Eu acho que a solução que dar um breakpoint na minha aplicação e depois chamar uma outra função que tenha essas regras.

    Mas eu não sei como criar uma função e nem como chama-la no ASP.Net nas paginas.aspx.cs

    Aguardo seu retorno.

    Muito Obrigado.

    terça-feira, 23 de abril de 2013 20:32
  • Bom dia Evandro Aguiar

    Eu fiz o passo a passo aqui para ver qual rontina faz meu codigo e de fato ele passa pela Resquest para depois passar pela mensagem por isso sempre vai ser nulo. Então nesse caso como você mesmo disse eu tenho que separar em 2 etapas. Eu estava pensando em criar um 2 buton2_click e chamar ele ou criar uma função.

    1) Criar um buton2_click com a 2 parte do codigo (nesse caso eu preciso saber como chamar ele via comando behind C#)

    2) Criar uma função com a 2 parte do codigo (nesse caso eu preciso saber como criar a função e como chamar ela pelo codigo behind C#)

    Obrigado pelo seu apoio.

    Aguardo seu retorno.

    quarta-feira, 24 de abril de 2013 10:41
  • Bom dia Evandro Aguiar

    Eu fiz o passo a passo aqui para ver qual rontina faz meu codigo e de fato ele passa pela Resquest para depois passar pela mensagem por isso sempre vai ser nulo. Então nesse caso como você mesmo disse eu tenho que separar em 2 etapas. Eu estava pensando em criar um 2 buton2_click e chamar ele ou criar uma função.

    1) Criar um buton2_click com a 2 parte do codigo (nesse caso eu preciso saber como chamar ele via comando behind C#)

    2) Criar uma função com a 2 parte do codigo (nesse caso eu preciso saber como criar a função e como chamar ela pelo codigo behind C#)

    Obrigado pelo seu apoio.

    Aguardo seu retorno.

    Sim, agora você entendeu. :)
    Se criar um outro clique do botão para chamar você faria:

    protected void Button2_Click(object sender, EventArgs e)
            {
                 //o resto do código aqui
            }

    E para chamar:

    Button2_Click(sender, e);

    Ou crie uma função:

    public Boolean InsereProduto()
            {
    //Seu código aqui if()//para verificar se inseriu corretamente return true; else return false; }

    E para chamar a função:

    Boolean inseriu = InsereProduto();
    //Aqui a variável inseriu vai receber true se inseriu corretamente e false se não inseriu

    Espero que tenha entendido, qualquer dúvida pergunte. Abraço


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh

    • Sugerido como Resposta EvandroAS quarta-feira, 24 de abril de 2013 12:44
    quarta-feira, 24 de abril de 2013 12:44
  • Bom dia Evandro Aguiar.

    Eu divide em 2 partes conforme sua orientação mas não funcionou.

    Aparece a mensagem porem so passa pela minha condição antes da mensagem mesmo ela estando antes da condição.

    Agora fiquei sem entender.

    Você pode me ajudar por favor.

    Ficou assim:

    protected void ButtonSalvar_Click(object sender, EventArgs e)
    {


    //Aqui chama o button_salvar2 conforme seu codigo, mas ele
    //na 1 vez passa direto e passa para a linha seguinte codigo 2
    ButtonSalvar2_Click(sender, e)


    //codigo 2 (Como não apareceu a mensagem devido a ter passado
    //Direto pelo codigo acima o codigo abaixo fica nulo

     if (Request["OK"] != null)
        {
          if (Request["OK"] == "s")
             {
                //1 logica de continuação
                                  
             }
             else
             {
                //2 logica de continuação

             }

        }


    }

     


    protected void ButtonSalvar2_Click(object sender, EventArgs e)
    {


    ClientScript.RegisterStartupScript(this.GetType(), "",
                             "<script type=\"text/javascript\">" +
                             "var result = confirm(\"Confirma?\");" +
                             "if(result){" +
                             "document.getElementById(\"OK\").value =\"s\";" +
                             "document.forms[\"form1\"].submit();" +
                             "}" +
                             "</script>"
                             );

    }

    fico no aguardo.

    Muito Obrigado.

    quinta-feira, 25 de abril de 2013 12:48
  • Evandro Aguiar

    Alguma novidade no meu post acima ?

    Fico no aguardo.

    Obrigado.

    quinta-feira, 25 de abril de 2013 20:27
  • Evandro Aguiar

    Alguma novidade no meu post acima ?

    Fico no aguardo.

    Obrigado.

    Amigo, coloque o código que pergunta ao usuário direto no botão, ficará mais fácil. Veja se resolve seu problema:

    OnClientClick="if (!window.confirm('Tem certeza que deseja excluir esse item ?')) return false;"

    É só colocar esse código direto no botão que assim que o usuário clicar vai aparecer a pergunte, caso ele confirme o código é executado, caso contrário não é. O seu código c# pode ficar normal, conforme estava anteriormente antes de dividir em 2 partes.

    Um exemplo:

    <asp:Button ID="btnInserir" OnClick="btnInserir_Click" OnClientClick="if (!window.confirm('Tem certeza que deseja inserir esse item ?')) return false;" runat="server" Text="Inserir" />

    Isso resolverá seu problema. Abraço


    Evandro Aguiar
    http://agenciawebpro.com.br

    Farei o possível, para ajudar. Caso eu consiga, marque minha resposta como útil e me faça feliz. :) hauhauhauhauh


    • Sugerido como Resposta EvandroAS quinta-feira, 25 de abril de 2013 21:58
    • Editado EvandroAS quinta-feira, 25 de abril de 2013 21:58
    quinta-feira, 25 de abril de 2013 21:58
  • Evandro Aguiar

    Eu não posso colocar a pergunta direto no button porque ela so sera disparada mendiando uma outra condição no meu projeto.

    So para vc entender.

    Usuario clica no ButtonSalvar_Click

    // Aqui eu faço um select numa tabela. Se esse select retorna com valor eu salvo sem mensagem alguma.

    if (select numa tabela existe)

    {

    salva

    }

    else

    {

    //Caso não exista na tabela ai eu faço a pergunta

    Se a resposta for OK

    {

    //Resposta Ok disparo minha linha de codigo para OK

    }

    else

    {

    //Resposta Cancelar disparo minha linha de codigo para CANCELAR

    }

    }

    Entendeu agora ?

    Se puder me ajudar eu agradeço.

    Obrigado.

    sexta-feira, 26 de abril de 2013 12:55
  • Evandro Aguiar

    Leu meu post acima ?

    Entendeu que eu não posso disparar a mensagem diretamente pelo meu button ja que eu dependo de uma condição conforme esta acima.

    Se tiver como me ajudar eu agradeço.

    Fico no aguardo.

    Obrigado.

    segunda-feira, 29 de abril de 2013 14:39
  • Evandro Aguiar

    Eu percebi que depois de varios testes aqui o codigo da mesagem abaixo so é executado apos todo processo. Não importa se coloco esse codigo em uma função separada ou button separado. A mensagem so aparece depois de todos os processos de modo que eu jamais vou conseguir recupara o que o usuario clicou.

    Então eu creio que o codigo da mesagem deve ser alterado para que ele seja executado diretamente sem passar por todos os processos.

    O codigo que vc me pasou esta abaixo:

    ClientScript.RegisterStartupScript(

    this.GetType(), "",

                            

    "<script type=\"text/javascript\">"+

                            

    "var result = confirm(\"Confirma?\");"+

                            

    "if(result){"+

                            

    "document.getElementById(\"OK\").value =\"s\";"+

                            

    "document.forms[\"form1\"].submit();"+

                            

    "}"+

                            

    "</script>"


                             );

    segunda-feira, 29 de abril de 2013 14:52
  • Bom dia Senhores...

    Estou com esse problema a mais de 1 mes. Ja tentei de varias formas resolver o problema acima mas sempre quando chego na parte final empaca e não consigo sair desse buraco.

    Obrigado a todos que ja tentaram me ajudar.

    Mas acredito que não seja impossivel o que eu estou pendindo.

    Eu ja tentei de todas as formas que me passaram porem não consigo termina meu codigo.

    Então se alguem puder me ajudar eu agradeço.

    Pela demora em não resolver esse post acredito que seja um problema para alguem que tenha muito conhecimento na area.

    Então mais uma vez quem puder me ajudar eu agradeço.

    Muito obrigado.

    Aguardo Retorno.

    terça-feira, 30 de abril de 2013 10:50
  • Se for o caso eu tive uma outra ideia o qual pode me ajudar conforme abaixo:

    Tenho o seguinte codigo javascript abaixo:

    ClientScript.RegisterStartupScript(this.GetType(),"",

                            "<script type=\"text/javascript\">" +

                            "var result = confirm(\"Confirma?\");" +

                            "if(result){" +

                            "document.getElementById(\"OK\").value =\"s\";" +

                            "document.forms[\"form1\"].submit();" +

                            "}" +

                            "</script>"

                            );

    Para que eu termine meu projeto eu preciso que quando o usuário clicar em Cancelar Desabilite os controles abaixo:

    - DropDownListCODMAT.Enable = “false”;

    - DropDownListCODSCH.Enable = “false”;

    - DropDonwListCODCLASSEP.Enable = “false”;

    Caso clicar em OK Habilite os controles abaixo:

    - DropDownListCODMAT.Enable = “true”;

    - DropDownListCODSCH.Enable = “true”;

    - DropDonwListCODCLASSEP.Enable = “true”;

    E todo esse processo tem que ser dentro do meu código acima javascript para que funcione corretamente.

    Como resolvo esse problema ?

    Alguem pode me ajudar ?

    Aguardo Retorno.

    Obrigado.

    terça-feira, 30 de abril de 2013 15:54
  • Sera que algume pode me ajudar no meu post acima ?

    Fico no aguardo.

    Obrigado.

    quinta-feira, 2 de maio de 2013 11:20