Foros del Web » Programación para mayores de 30 ;) » .NET »

Enviar un parámetro a una función de servidor desde un control .NET

Estas en el tema de Enviar un parámetro a una función de servidor desde un control .NET en el foro de .NET en Foros del Web. Imaginemos que estoy ante un botón o un link (de .NET, así que asp:button o asp:linkbutton), al que le asocio una función en el onClick, ...
  #1 (permalink)  
Antiguo 01/08/2007, 04:11
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Enviar un parámetro a una función de servidor desde un control .NET

Imaginemos que estoy ante un botón o un link (de .NET, así que asp:button o asp:linkbutton), al que le asocio una función en el onClick, que obligatoriamente me dice que tiene que ir sin parámetros.

Bueno, en la declaración de la función, pondremos como parámetros:

(ByVal sender As System.Object, ByVal e As System.EventArgs)

Mi duda es si se le puede pasar parámetros, o al menos saber qué botón ha llamado a la función.

No me valdría algo con el Handles, como esto:

Private Sub mnAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnAbrir.Click

Porque el Handles hace referencia a un botón concreto, y yo quiero que varios la puedan llamar (pero que actúe de diferente forma según quien lo llame. Por ejemplo, imaginemos que cada botón tiene asociado a un textbox del que se sacarán datos para la función y otro en el que se mostrarán).
  #2 (permalink)  
Antiguo 01/08/2007, 04:19
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Re: Enviar un parámetro a una función de servidor desde un control .NET

Además sería interesante controlar el flujo de la página con dichas funciones de .NET activadas por eventos, y que en lugar de ir primero al OnLoad y en último lugar a la función que llama, fuera primero a la función (o en todo caso, en el OnLoad, de una forma puramente .NET, le dijéramos que no ejecutara ciertas cosas, que se ejcutarán después de ejecutar la función).

Algo equivalente a esto puede realizarse simplemente con el "If not is postback then", y no poner que haga nada en los postback (ya lo hará en las funciones de los controles .NET que hayan forzado el postback), pero entonces ya tienes que en cada una de las funciones realizar todo lo que quieras hacer, incluyendo la realización que quieras del onLoad, en lugar de poder simplemente como decía en el OnLoad indicar que cuando hayamos pulsado determinado botón no haga tal cosa. Tampoco es que tenga nada de malo, es más, es hasta mejor y te permite realizar sólo lo necesario (y gracias a que en .NET hay persistencia de los datos guardados en los controles, no realizar nada más). Pero eso, me gustaría saber si hay algún modo de dirigir el flujo en el OnLoad en función del control pulsado.

Última edición por programadornet; 01/08/2007 a las 07:54
  #3 (permalink)  
Antiguo 01/08/2007, 10:16
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Enviar un parámetro a una función de servidor desde un control .NET

Cita:
Iniciado por programadornet Ver Mensaje
Porque el Handles hace referencia a un botón concreto, y yo quiero que varios la puedan llamar (pero que actúe de diferente forma según quien lo llame. Por ejemplo, imaginemos que cada botón tiene asociado a un textbox del que se sacarán datos para la función y otro en el que se mostrarán).
Oye pero tu caso es medio raro, quieres utilizar una sola función para todos los eventos clic de diferentes botones, pero necesitas que el código se comporte diferente según el botón que lo haga llamado.

Entonces mejor quedate con un método para el clic de cada botón pos
  #4 (permalink)  
Antiguo 02/08/2007, 04:40
 
Fecha de Ingreso: abril-2007
Mensajes: 160
Antigüedad: 17 años
Puntos: 1
Re: Enviar un parámetro a una función de servidor desde un control .NET

Cita:
Iniciado por Developer9 Ver Mensaje
Entonces mejor quedate con un método para el clic de cada botón pos
¿Cómo se haría eso?

Y sí, no es tan raro, quiero que se comporte diferente según el botón, simplemente porque al apretar el botón le mandaremos un parámetro distinto (por ejemplo: boton1 llama a la función mandándole un 1, boton2 llama a la misma función mandándole un 2, etc.).
  #5 (permalink)  
Antiguo 02/08/2007, 07:34
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Re: Enviar un parámetro a una función de servidor desde un control .NET

Entonces ya vas bien.
En cada botón deberás indicarle un CommandArgument distinto, que recogerás como parámetro en tu única función que manejara el click de todos los botones.
La función Click del lado del server sería algo así:
Código:
Protected Sub miBoton_Click(ByVal sender As ..)
    Dim Botoncito As Button = CType(sender, Button)
    Dim miParametro As String = Botoncito.CommandArgument
    'A partir de aquí, Todo tuyo...
End Sub
Un saludo
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 02/08/2007 a las 08:04
  #6 (permalink)  
Antiguo 02/08/2007, 07:57
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Enviar un parámetro a una función de servidor desde un control .NET

Cita:
Iniciado por programadornet Ver Mensaje
¿Cómo se haría eso?

Y sí, no es tan raro, quiero que se comporte diferente según el botón, simplemente porque al apretar el botón le mandaremos un parámetro distinto (por ejemplo: boton1 llama a la función mandándole un 1, boton2 llama a la misma función mandándole un 2, etc.).
Ya pos, entonces crea una función que reciba un valor entero de parámetro. Entonces en el evento clic de cada botón llamas a esa función mandandole el uno, dos o tres, como parámetro. Entonces la función ya va a saber desde donde se la está llamando.

Monte de zion, no entendí que es lo que trae el Botoncito.CommandArgument
  #7 (permalink)  
Antiguo 02/08/2007, 08:04
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Re: Enviar un parámetro a una función de servidor desde un control .NET

Developer de 9!
Esta es la forma de pasar un argumento a la función del lado del server que maneja el evento. Le das un valor a la propiedad CommandArgument del botón y puedes recogerla en tu función de servidor. De esta forma, puedes utilizar una misma función para manejar todos los Clicks sin tener que crear un evento Click para cada botón...
Cita:
Iniciado por moNTeZIon Ver Mensaje
...En cada botón deberás indicarle un CommandArgument distinto, que recogerás como parámetro en tu única función que manejara el click de todos los botones...
__________________
..:: moNTeZIon ::..
  #8 (permalink)  
Antiguo 02/08/2007, 08:29
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Enviar un parámetro a una función de servidor desde un control .NET

je je, y en donde le doy un valor a la propiedad CommandArgument

Explicalo bonito pos

No ves que lo que haces en esta linea:

Dim miParametro As String = Botoncito.CommandArgument

Es tomar lo que tenga commandArgument. Pero no dijiste donde hay que ponerselo
  #9 (permalink)  
Antiguo 02/08/2007, 08:55
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Re: Enviar un parámetro a una función de servidor desde un control .NET

DeveloperNine!!! Estás duro de mollera hoy eh!!
Cita:
Iniciado por moNTeZIon Ver Mensaje
Le das un valor a la propiedad CommandArgument del botón y puedes recogerla en tu función de servidor. De esta forma, puedes utilizar una misma función para manejar todos los Clicks sin tener que crear un evento Click para cada botón...
Sería esto, exactamente:
Código:
<asp:Button ID="unID" runat="server" CommandArgument="popo" />
Y para cada uno de los botones, le das un CommandArgument distinto... O igual, eso ya...
__________________
..:: moNTeZIon ::..
  #10 (permalink)  
Antiguo 02/08/2007, 13:00
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
Re: Enviar un parámetro a una función de servidor desde un control .NET

Cita:
Iniciado por moNTeZIon
DeveloperNine!!! Estás duro de mollera hoy eh!!


Yo solo pregunto lo que no está clarinetes

Código:
<asp:Button ID="unID" runat="server" CommandArgument="popo" />


mi botón es popo
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 05:40.