none
Utilizando função asp.net com javascript RRS feed

  • Pergunta

  • Bom dia galera

    Tenho uma função com o item um chamado Gera_Codigo dentro do arquivo Produto.cs, que utilizo em asp.net assim:

    ex:

    Produto.Gera_Codigo(codigo);

    estou tentando chamar essa mesma função no "onchange" de um select, mas dentro do javascript Set_Codigo não estou sabendo como chamar minha função Gera_Codigo().

    ex:

    <select onchange="Set_Codigo(this.value)" >

    <script type="text/javascript">
            function Set_Codigo( codigo )
            {
                form.pro_codigo.value = ?;
            }
        </script>

    Alguém pode ajudar?

    terça-feira, 25 de novembro de 2014 17:57

Todas as Respostas

  • Olá Junior,

     esse método Gera_Codigo está em seu code-behind ? Se sim por que não utiliza Ajax é muito mais simples.

     Lembrando que se estiver no code-behind deve ser static e com um atributo WebMethod marcado ! 

     Veja exemplo nesse link !!

    terça-feira, 25 de novembro de 2014 18:23
  • Olá Junior, não sei o que mais tem em seu código, pois fiz um teste simples e funcionou a chamada JS.

    Fiz tudo em meu código aspx, ficou + - assim.

    <script type="text/javascript">
    function Set_Codigo(codigo)
    {
    	alert('Aquiii');
    }
    </script>
    
    <select name="myselect" id="myselect" onchange="Set_Codigo(this);">
            <option value="1">One</option>
            <option value="2">Two</option>
            <option value="3">Three</option>
    </select>

    E claro, em minha masterPage estou setando o form para meus contents.  <form id="form1" runat="server">

     E também um ScriptManager para caso eu queira adicionar algum comando ajax.

    ********************************************************

    Sempre lembre de marcar a resposta se ela foi útil.

    terça-feira, 25 de novembro de 2014 18:53
  • Boa tarde Junior,

    Bom, pelo que entendi você está tentando utilizar o javascript (SetCodigo()) para chamar o seu método no Produto.cs (Gera_Codigo()), certo?

    Vamos entender qual é o problema primeiro.

    O javascript roda em Client-Side, o que é isso? Simples, o Html, javascript e CSS são interpretados pelo computador do usuário do site não pelo servidor onde está o seu site.

    O Produto.cs é um arquivo DLL (*.dll) que roda no seu servidor devido a isso é um Server-Side, o que é isso? Simples também, ele é rodado e interpretado pelo seu servidor que por sua vez irá processar a requisição do usuário e usar o arquivo Produto.cs para definir o HTML que irá enviar para o seu usuário que por sua vez irá ser interpretado pelo navegador que estiver utilizando.

    Qual o Problema disso? O método Set_Codigo() está no seu cliente (usuário do seu site) enquanto o seu método Gera_Codigo() está no seu servidor e um não tem comunicação com o outro a não ser por requisição HTTP.

    Como resolver isso?

    A maneira mais facil de resolver esse problema é utilizarmos uma requisição via AJAX para o seu servidor, que irá chamar o Método Gera_Codigo() e irá devolver a resposta para o ajax. 

    Segue um link com um exemplo bem fácil de entender de como fazer isso funcionar: http://www.aspsnippets.com/Articles/Calling-ASPNet-WebMethod-using-jQuery-AJAX.aspx

    Requisitos para fazer isso funcionar:

    Seu método Gera_Codigo() deve estar marcado como "WebMethod" conforme o exemplo abaixo:

    [WebMethod]
    public string Gera_Codigo(string codigo) 
    {
        string resposta_processada;
    
        //seu código aqui dentro
        return resposta_processada;
    }

    Outro requisito é que o retorno deve retornar entre uma das 3 formas: XML, JSON ou String.

    O restante você consegue seguir pelo tutorial no link que coloquei acima.

    Espero ter ajudado.

    Abraços

    • Sugerido como Resposta Murilo Neandro segunda-feira, 15 de dezembro de 2014 18:24
    quarta-feira, 26 de novembro de 2014 20:48