Inquiridor
Utilizando função asp.net com javascript

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?
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 !!
-
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.
-
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