Foros del Web » Programando para Internet » ASPX (.net) »

Llamar a una función de Visual Basic desde una función de JavaScript

Estas en el tema de Llamar a una función de Visual Basic desde una función de JavaScript en el foro de ASPX (.net) en Foros del Web. Muy buenas. Estoy realizando un proyecto web ASP NET desde el Visual Studio 2005 .NET. Me gustaría saber si es posible hacer una llamada a ...
  #1 (permalink)  
Antiguo 25/04/2006, 03:53
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Llamar a una función de Visual Basic desde una función de JavaScript

Muy buenas.

Estoy realizando un proyecto web ASP NET desde el Visual Studio 2005 .NET.
Me gustaría saber si es posible hacer una llamada a una función de Visual Basic (en el aspx.vb) desde una función de Javascript. La idea es comprobar una serie de cosas en javascript y si todo es correcto haga la llamada a la función que guarda unos datos en una base de datos (en visual basic).

Esta es la idea:

CÓDIGO VB:
Protected Sub Guardar()
(aqui va el código para guardar)
End Sub

CÓDIGO JAVASCRIPT:
function comprobar()
{
...
(Aqui hago las comprobaciones)
...
if(todocorrecto)
//Esta es la idea de lo que pretendo, llamar a la función de VB:
document.formulario.guardar()
}

Muchísimas gracias!!!
  #2 (permalink)  
Antiguo 25/04/2006, 08:20
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Si te entendi.. puedas llamar al metodo click() de los botones en javascript ya que esa instruccion hace que se envie la pagina...

Código:
var btn = document.getElementById("TuButtonClientID");
if (btn){
   btn.click();
}
  #3 (permalink)  
Antiguo 25/04/2006, 08:55
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Hola

Creo que no me has entendido, o no me eh explicado:

Tu solución ya la leí en otro asunto de este foro, pero mo me sirve, porque ahi llamas a un evento al hacer click de una función de javascript a otra función de javascript. En tu ejemplo pones lo siguiente:

var btn = document.getElementById("TuButtonClientID");
if (btn){
//Aqui llamas a otra función de Javascript en vez de una de Visual Basic:
btn.click();
}

Ahí ejecutas el evento al hacer click de btn, pero yo lo que quiero es llamar a UNA FUNCIÓN DE VISUAL BASIC, por ejemplo a Protected Sub guardar().

Espero que alguien pueda darme una respuesta!

Saludos
  #4 (permalink)  
Antiguo 25/04/2006, 09:27
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
aupaneu.. entonces no tienes un boton guardar en tu formulario? entonces como probocas la accion de guardar los datos? que control usas? linkbutton, imagebutton?

El comportamiento normal de los formularios al guardar datos es hacer un submit, asi que por eso te he puesto lo del boton en javascript. Si no entendiste, en el codigo behind del boton puedes mandar llamar tu funcion guardar.... es asi como se me ocurrio responder a tu post.. por que a fin de cuentas hace lo que estas pidiendo...es una solucion que funciona.. a lo mejor no es la mejor .. pero funciona... además no has puesto caracteristicas como "no quiero que haga postback", si es asi tendrias que implementar un callback mismo que en asp-net lo puedes hacer asi: http://www.dotnetjunkies.com/Tutoria...0EECF13D7.dcik e incluso te pondria decir como hacerlo.. pero no... ahi esta el link de ejemplo... si quieres resolver tu problema entonces tendrás que leer...

Sabes.. creo que hay formas de pedir y agradecer las cosas en ves de andar con exigencias...

buscate informacion de callbacks ó como usar atlas (http://atlas.asp.net/Default.aspx?tabid=47)
  #5 (permalink)  
Antiguo 25/04/2006, 09:47
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Hola

Gracias por tu ayuda. Mi intención no era andar con exigencias, de verdad, agradezco mucho toda ayuda.

Un saludo

Hasta otra!
  #6 (permalink)  
Antiguo 25/04/2006, 11:11
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Resuelto

Hola!

Nada más que era para comentar que ya he solucionado el problema, ya que tengo entendido que se debe informar cuando se haya resuelto el problema.

Lo he resuelto así:

En el evento on load de la página, pongo delante de la llamada a la función de Javascript un return. Si esta función devuelve 'true' ejecutará también el evento btnguardar_click(), si devuelve 'false' no ejecutará dicho evento (ya que primero se ejecuta la función de javascript antes que la de visual basic).

Este es el código VB:

Le decimos que al hacer click en el boton 'btnguardar' se ejecute la función 'validar_campos', que devuelve 'true' si todo es correcto y 'false' si algo falla:

Protected Sub Page_Load(bla bla bla)
...
Me.btnguardar.Attributes.Add("onclick", "javascript:return validar_campos();")
Me.btnaceptar.Attributes.Add("onclick", "javascript:return validar_campos();")
...
End sub

Aqui iría la parte donde cogemos los datos de los textbox para llevarlos a la base de datos (accediendo a los datatable,dataset...). Esto es lo que no se ejecutará si la función de javascript devuelviera 'false':

Protected Sub btnguardar_Click(bla bla)
Dim dr as datarow
...
...
Me.datatable.AcceptChanges()
msgbox("Registro guardado")
End sub

Y esta sería la función de Javascript. Supongamos que hay que comprobar si se han introducido datos en 2 campos:

function validar_campos(boton){
if (document.form_empresas.txtnombre.value=='')
{
alert("Debes introducir el nombre de la empresa")
return false; (no se ejecutará el evento btnguardar_click)
}
if (document.form_empresas.txtpueblo.value=='')
{
alert("Debes introducir la población de la empresa")
return false; (no se ejecutará el evento btnguardar_click)
}
return true; (aunque no es necesario, por defecto devuelve 'true')(si se ejecutará el evento btnguardar_click)
}

Espero que haya servido a alguno por ahi que haya tenido el mismo problema.

Gracias a los que me habeís ayudado (gracias Stream).

Un saludo
  #7 (permalink)  
Antiguo 25/04/2006, 12:09
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Bueno.. de nada friend.. lo que me sorprende es que a fin de cuentas era una simple validacion... y yo mandandote a atlas y o ajax... nada mas como recomencacion.. aprende a pedir lo que necesitas friend... te recuerdo tu post inicial:

Cita:
Llamar a una función de Visual Basic desde una función de JavaScript

--------------------------------------------------------------------------------

Muy buenas.

Estoy realizando un proyecto web ASP NET desde el Visual Studio 2005 .NET.
Me gustaría saber si es posible hacer una llamada a una función de Visual Basic (en el aspx.vb) desde una función de Javascript. La idea es comprobar una serie de cosas en javascript y si todo es correcto haga la llamada a la función que guarda unos datos en una base de datos (en visual basic).
Uno entiende por eso a que necesitas ejecutar una funcion desde js.. en fin.. que bien que solucionaste tu problema..

Un saludo..
  #8 (permalink)  
Antiguo 25/04/2006, 14:10
Avatar de coyote_fac  
Fecha de Ingreso: enero-2006
Mensajes: 24
Antigüedad: 18 años, 3 meses
Puntos: 0
Cita:
Iniciado por Stream
Si te entendi.. puedas llamar al metodo click() de los botones en javascript ya que esa instruccion hace que se envie la pagina...

var btn = document.getElementById("TuButtonClientID");
if (btn){
btn.click();
}

Buen truco me lo apunto, pero si no deseariamos ejecutar el procedimiento del evento Click() (en el codigo .NET), si no cualquier otro procedimiento (tambien en el codigo.NET)?
se puede hacer el llamado a dicho procedimiento desde javascript ?
__________________
Si tiras un árbol, no te quejes luego de no poder acogerte a su sombra

Última edición por coyote_fac; 25/04/2006 a las 14:18
  #9 (permalink)  
Antiguo 26/04/2006, 00:29
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años
Puntos: 0
Hola.


Lo de llamar a una función (o evento) de Visual Basic .NET desde JavaScript (que es lo que intentaba averigüar yo en un principio), me parece que no se puede hacer, no se puede llamar desde el código cliente al servidor.

Si quieres llamar a otra función de Javascript (para llamar a un evento utilizas el método de Stream) pones el nombre de la función que desees llamar y listo:

function funcion_que_llama_a_otra_funcion_javascript()
{
func_saludo('Hola coyote fac!');
}
function func_saludo(saludo)
{
alert(saludo)
}


Un saludo
  #10 (permalink)  
Antiguo 02/05/2006, 14:29
 
Fecha de Ingreso: mayo-2006
Mensajes: 1
Antigüedad: 18 años
Puntos: 0
Pregunta Realmente imposible?

Hola... estoy teniendo la misma duda que tú al principio... cómo ejecutar una función declarada en el .aspx.vb desde una función javascript declarada en el .aspx

He buscado y no he encontrado (excepto tu solución que no se adapta a mi necesidad)... pero antes de desistir en mi búsqueda, quisiera saber: ¿qué tan seguro estás de que no se puede hacer esto?

Gracias.
  #11 (permalink)  
Antiguo 02/05/2006, 14:36
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Si se puede hacer.. lo puedes hacer con ajax.net...

Crear una funcion en el codebehind y llamarla desde javascript...

http://ajax.schwarz-interactive.de/c...e/default.aspx
  #12 (permalink)  
Antiguo 08/11/2010, 11:00
 
Fecha de Ingreso: enero-2010
Mensajes: 4
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Llamar a una función de Visual Basic desde una función de JavaScript

Hola Stream!! =)

Necesito hacer algo parecido a lo d mauricio.vargas pero el link q pusiste esta roto :S:S


Cuando la longitud de un textbox llegue a 5 (esto lo realizo con el keypress desde javascript),

Ejecutar un funcion que esta en aspx.vb

lo que quiero es que la funcion de javascript me retorne true o false y yo cacharla en la pagina para ejecutar la funcion ....

o desde la funcion de javascript mandar llamar a la funcion de aspx.vb =P

Espero y me puedan ayudar!!

desde ya Gracias!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:41.