Ver Mensaje Individual
  #6 (permalink)  
Antiguo 25/04/2006, 11:11
aupaneu
 
Fecha de Ingreso: abril-2006
Mensajes: 166
Antigüedad: 18 años, 1 mes
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