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

Capturar confirmacion desde codbehind

Estas en el tema de Capturar confirmacion desde codbehind en el foro de ASPX (.net) en Foros del Web. Hola a todos, Estoy intentando capturar lo que el usuario ha presionado despues de utilizar el mensaje de confirm. pongo en el load de la ...
  #1 (permalink)  
Antiguo 21/01/2010, 14:16
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Capturar confirmacion desde codbehind

Hola a todos,

Estoy intentando capturar lo que el usuario ha presionado despues de utilizar el mensaje de confirm.


pongo en el load de la pagina lo siguiente:

Código vb:
Ver original
  1. Me.btnrendi.Attributes.Add("language", "javascript")
  2. Me.btnrendi.Attributes.Add("OnClick", "return Confirmar('Exportar?');")

luego en el evento del boton lo siguiente:

Código vb:
Ver original
  1. Protected Sub btnrendi_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnrendi.Click
  2.  
  3.  'Aqui necesito capturar lo que el usuario a dado click (OK o Cancel) para asi proceder con el codigo para exportar el informe sino solo mostrar el informe
  4.  
  5.  'Codigo para llenar un informe y mostrarlo
  6. if usuario="OK" then
  7.      'Codigo para exportar el informe  
  8. end if
  9.        
  10.  
  11.     End Sub

Si alguien me puede ayudar. Muy agradecido
  #2 (permalink)  
Antiguo 21/01/2010, 15:21
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Capturar confirmacion desde codbehind

Es más facil hacerlo mediante la propiedad OnClientClick del botón.

Código ASP:
Ver original
  1. <asp:button id="btn" runat="server" onClientClick="return confirm('exportar?')">

Si el usuario acepta se ejecuta el código del lado de servidor, sino no hará nada.

__________________
Eduardo Peredo
Wigoin
  #3 (permalink)  
Antiguo 21/01/2010, 15:39
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Capturar confirmacion desde codbehind

Gracias por la respuesta, la verdad mi verdadera necesidad es diferenciar que es lo que el usuario quiere, ya que en el codigo behind del boton tengo bifurcado el codigo, es decir si acepta hago algo sino acepta hago lo otro.

y a como me lo planteas no tengo opcion de decidir cual codigo ejecutar, sino que ejecutaria lo que sea que haya en el envento del boton.

Gracias de antemano.
  #4 (permalink)  
Antiguo 22/01/2010, 06:19
 
Fecha de Ingreso: octubre-2004
Mensajes: 16
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Capturar confirmacion desde codbehind

Lo que puedes hacer es algo parecido a lo que decía eperedo, pero así:

1)
Código HTML:
<asp:button id="btn" runat="server" onClientClick="return confirmar();"> 
2)
Código HTML:
//Ej JS

function confirmar(valor)
{
     var respuesta = confirm('Exportar???');
     //Siendo "Exporta" un control HiddenField
     if (respuesta)
        document.getElementById('Exporta') = 'si';
     else
        document.getElementById('Exporta') = 'no';

    
     //Siendo "Button1" un control Button
     var boton = document.getElementById('Button1');
     if (boton)
        boton.click();
}
3)
Código HTML:
'En el CodeBehind

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

     if Exporta.value = "si" then
           'Código para exportar
     else
           'Mensaje de error o lo que quieras
     end if

End Sub
En 1), cuando le das el click al button, vas a 2), que es una función en JS. Básicamente hace el confirm y lo almacena en una variable HiddenField, previamente creada. Una vez hecho esto, se llama a otro botón previamente creado (Button1) y se ejecuta. Este botón va a la función mostrada en 3), donde llamas a la variable HiddenField y de acuerdo al valor, haces lo que necesitas.

Espero que te sirva.

Saludos!!
  #5 (permalink)  
Antiguo 23/01/2010, 14:55
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Capturar confirmacion desde codbehind

Gracias por la respuesta, he intentado algo parecido a tu respuesta, pero por alguna razon no puedo acceder a la propiedad "value" ni "innertext" no se que estoy haciendo mal. tengo una label en el form, pero no puedo acceder a su propiedad

este es parte de mi codigo, espero me ayuden

esta es mi label
Código Javascript:
Ver original
  1. <asp:Label ID="mens" runat="server"></asp:Label>

esta es mi funcion
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2.             function Confirmar() {
  3.                 if (confirm('¿Desea Exportar este reporte?'))
  4.                 {
  5.                     document.getElementsById("mens").value = "si";
  6.                    return true;
  7.                 }
  8.                 else {
  9.                     return false;
  10.                 }
  11.                 }
  12.       </script>

este es mi codbehind
Código vb:
Ver original
  1. Protected Sub btnrendi_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnrendi.Click
  2.         If mens.Text = "si" Then
  3.             'codigo para exportar
  4.        Else
  5.             'codigo para mostrar el reporte
  6.        End If
  7.     End Sub
  #6 (permalink)  
Antiguo 24/01/2010, 13:46
Avatar de eperedo  
Fecha de Ingreso: septiembre-2009
Ubicación: Perú
Mensajes: 654
Antigüedad: 14 años, 7 meses
Puntos: 16
Respuesta: Capturar confirmacion desde codbehind

Para acceder a controles de servidor mediante javascript debes usar ClientID
Código Javascript:
Ver original
  1. function Confirmar() {
  2.                 if (confirm('¿Desea Exportar este reporte?'))
  3.                 {
  4.                     document.getElementsById('<%=mens.ClientID %>').value = "si";
  5.                    return true;
  6.                 }
  7.                 else {
  8.                     return false;
  9.                 }
  10.                 }

Ojo que fantits te recomendó usar un HiddenField así el valor queda oculto para el usuario.

Saludos.
__________________
Eduardo Peredo
Wigoin
  #7 (permalink)  
Antiguo 25/01/2010, 08:01
 
Fecha de Ingreso: octubre-2004
Mensajes: 16
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Capturar confirmacion desde codbehind

Cita:
Iniciado por eperedo Ver Mensaje
Para acceder a controles de servidor mediante javascript debes usar ClientID
Código Javascript:
Ver original
  1. function Confirmar() {
  2.                 if (confirm('¿Desea Exportar este reporte?'))
  3.                 {
  4.                     document.getElementsById('<%=mens.ClientID %>').value = "si";
  5.                    return true;
  6.                 }
  7.                 else {
  8.                     return false;
  9.                 }
  10.                 }

Ojo que fantits te recomendó usar un HiddenField así el valor queda oculto para el usuario.

Saludos.
mmmm que extraño, siempre he usado el getElementById con el nombre del control (Id y no ClientID) y me ha funcionado... hay alguna razón específica para usar ClientID en js, en vez de Id?... ya que hasta ahora al parecer se comportan igual...

salu2!
  #8 (permalink)  
Antiguo 25/01/2010, 15:36
 
Fecha de Ingreso: enero-2010
Ubicación: Estelí, Nicaragua
Mensajes: 157
Antigüedad: 14 años, 3 meses
Puntos: 8
Respuesta: Capturar confirmacion desde codbehind

gracias por las respuestas.

les comento que utilice el hiddenfield y no me funcionaba.

la razon de eso era que yo ingresaba el control en la celda de una tabla y por eso no me reconocia dicho control, al moverlo a la parte superior de la pagina en el form, entonces si me funciono y pude acceder al valor y modificarlo, utilice la funcion que me facilito Fantits y todo funciono de maravillas, gracias nuevamente por encaminarme a la solucion.

si alguien tiene un conocimiento mas tecnico de lo que me ocurria me gustaria que pusiera su comentario.

Problema resuelto muchas gracias.

Etiquetas: confirmacion, aspx
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




La zona horaria es GMT -6. Ahora son las 17:02.