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

Una pregunta tonta

Estas en el tema de Una pregunta tonta en el foro de ASPX (.net) en Foros del Web. Hola compañeros. Tengo una duda tonta y quería saber como la solventáis vosotros. Veréis, tengo una web aspx con Asp.net 2005 y en dicha web ...
  #1 (permalink)  
Antiguo 13/10/2008, 05:12
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Una pregunta tonta

Hola compañeros. Tengo una duda tonta y quería saber como la solventáis vosotros.

Veréis, tengo una web aspx con Asp.net 2005 y en dicha web tengo varios controles Web. El problema está en que desde el código de uno de los controles necesito acceder al valor de una variable local de la página web. ¿Cómo puedo hacer eso? ¿Herencia? ¿Hay alguna otra forma?

Gracias
  #2 (permalink)  
Antiguo 13/10/2008, 07:44
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Una pregunta tonta

La variable la tienes en un control , es un miembro o propiedad de tu objeto pagina , o es el valor de un control??.

PD: No hay preguntas tontas, hay tontos que no preguntan :)
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 13/10/2008, 10:11
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

Cita:
Iniciado por Peterpay Ver Mensaje
PD: No hay preguntas tontas, hay tontos que no preguntan :)

Muy buena esa ;)

Te explico. Mi página tiene un control Web, y en el código del control, necesito acceder a una variable de la página.
Doy más detalles. En la página, cargo un objeto que recibe el valor gracias a "session". Ese objeto tiene información sobre el usuario, y luego en el control Web que está dentro de la página, necesito recuperar esa información que está almacenada en el objeto de la página.

Hombre podría pasarle el objeto desde la página al control, pero preferiría no hacerlo y desde el control Web poder acceder a los datos de la Web porque me vendría muy bien no solo para este caso. El problema es que no se hacerlo.

Si aún no me explico bien dímelo y trato de hacerlo mejor.
  #4 (permalink)  
Antiguo 13/10/2008, 10:57
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
Respuesta: Una pregunta tonta

que modificador de acceso tiene tu propiedad lo que puedes hacer es en el control

this.Page y castearlo al tipo de tu WebForm digamos que es la pagina Pagina1.aspx esta es de la clase Pagina1

puedes hacer

Pagina1 actual=this.Page as Pagina1;
actual.PropiedadAlaQueQuieresAcceder;

pero considerar que PropiedadAlaQueQuieresAcceder sea publica o interna.
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #5 (permalink)  
Antiguo 13/10/2008, 11:43
 
Fecha de Ingreso: agosto-2006
Mensajes: 101
Antigüedad: 17 años, 8 meses
Puntos: 0
Respuesta: Una pregunta tonta

Hola compañero,
yo te doy otra idea a ver qué te parece...
Yo pondría un método público en el control que recibiera la variable que quieres pasarle, y desde la página principal, llamaría a dicho método...
Espero que te sea de utilidad.

Un saludo.
__________________
Artículos sobre programación - www.webprogramacion.com
  #6 (permalink)  
Antiguo 14/10/2008, 01:11
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

Cita:
Iniciado por dvelazquez Ver Mensaje
Hola compañero,
yo te doy otra idea a ver qué te parece...
Yo pondría un método público en el control que recibiera la variable que quieres pasarle, y desde la página principal, llamaría a dicho método...
Espero que te sea de utilidad.

Un saludo.
Si eso ya lo había pensado. El problema está en que la página irá mostrando hasta 5 controles distintos a modos de "pasos" a seguir, y todos los controles deben acceder a esa propiedad. Si hago lo que dices tendría que hacerlo con los 5 controles y no me resulta práctico. Lo realmente práctico sería que diréctamente los controles puedan acceder a la propiedad de "su contenedor" digamos.
Voy a probar el método Peterpay
  #7 (permalink)  
Antiguo 14/10/2008, 01:15
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

Cita:
Iniciado por Peterpay Ver Mensaje
que modificador de acceso tiene tu propiedad lo que puedes hacer es en el control

this.Page y castearlo al tipo de tu WebForm digamos que es la pagina Pagina1.aspx esta es de la clase Pagina1

puedes hacer

Pagina1 actual=this.Page as Pagina1;
actual.PropiedadAlaQueQuieresAcceder;

pero considerar que PropiedadAlaQueQuieresAcceder sea publica o interna.
En el control no me deja declarar objetos del tipo "clase de mi página".

La declaración de la clase del aspx es así:

Partial Class SendEmailing

¿Será por el Partial o algo similar?
  #8 (permalink)  
Antiguo 15/10/2008, 01:01
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

He intentado de todo, pero sigo en las mismas
  #9 (permalink)  
Antiguo 15/10/2008, 03:55
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Una pregunta tonta

Yo lo que haria es lo siguiente:
Pagina padre crearia una propiedad publica que almacene el dato que necesitas.
Luego en el control crearia otra propiedad publica que sea de tipo pagina padre y luego podrás acceder a ella desde el control:
valor = propiedaddelcontrol.propiedadpaginapadre
Ej en VB .Net
En la pagina padre o contenedora: Padre.aspx
Código:
Public ReadOnly Property ValorQueryString() As String
        Get
            Return Request.QueryString("Valor")
        End Get
    End Property
En el control: control.aspx
Código:
 Public ReadOnly Property Padre() As Padre
        Get
            Return DirectCast(Me.Page, Padre)
        End Get
    End Property
Y accedes con: Padre.ValorQueryString
  #10 (permalink)  
Antiguo 15/10/2008, 05:17
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

El problema está en que no puedo declarar en el control una propiedad del tipo "padre" porque no me reconoce ese tipo. El control web no sabe de lo que le estoy hablando al poner el nombre de la clase que encloba la página Web aspx, no se si me explico.
  #11 (permalink)  
Antiguo 15/10/2008, 09:39
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Una pregunta tonta

¿pero te da algún error en concreto?

¿usas VB o C#?
  #12 (permalink)  
Antiguo 20/10/2008, 04:15
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

Cita:
Iniciado por kennyhp Ver Mensaje
¿pero te da algún error en concreto?

¿usas VB o C#?
No me da ningún error. Símplemente no puedo acceder a ellas porque el compilador no detecta que estén heradadas o que tenga acceso a dicha propiedad.

Programo con VB.

PD: Ahora por ejemplo en la página tengo dos controles web, y en el control 1 tengo un dato que me interesa tener en el control 2, pero desde el control 2, no tengo acceso al control uno.
  #13 (permalink)  
Antiguo 21/10/2008, 07:25
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Una pregunta tonta

¿puedes poner el código de como estas intentando acceder a los valores?
  #14 (permalink)  
Antiguo 23/10/2008, 01:36
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

Es que no hay código. Símplemente tengo un control Web insertado en una página aspx. Dentro del control, trato de escribir código para acceder a variables que tenga la páginas aspx, pero no encuentro ninguna forma. Por eso no puedo ponerte el código.
  #15 (permalink)  
Antiguo 23/10/2008, 07:43
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Una pregunta tonta

Si te he entendido bien, estas usando un control no creado por ti y al que no tienes acceso a su código fuente... por lo tanto si este control no esta preparado para ello, no podrás acceder a sus propiedades, ya que este no las está exponiendo.
Lo único que se me ocurre a voz de pronto, tal vez sea un poco cutre, es que con Reflector veas las "entrañas" del control y observes el ID de los controles hijos a los que quieras acceder, luego en tu pagina crea un objeto del mismo tipo que usa el control y casteas con el del control haciendo un FindControl.
Código:
Label etiqueta = new Label();
etiqueta  = (Label)NombreDelContro.findControl("ElIDDelControlHijoAlQueQuieresAcceder");
miLabelDeLaPantalla.Text = etiqueta.Text;
No tengo ni idea de si te funcionara, pero por probar...

Un saludo!

Última edición por kennyhp; 23/10/2008 a las 07:56
  #16 (permalink)  
Antiguo 23/10/2008, 10:10
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

No me debí de explicar bien.
El control Web es mío. Y dentro de su código, del código del control, quiero acceder a unas propiedades que tiene la páginas aspx. Es decir, la páginas aspx contiene el control, y programando las funciones del control, en un punto quiero acceder a datos que están en la página.
  #17 (permalink)  
Antiguo 24/10/2008, 06:30
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Una pregunta tonta

Pues la verdad es que no entiendo cual es el problema de las propiedades... esta tarde o mañana, a ver si tengo un rato me pico el código en VB para poder hacer lo que quieres y te lo subo... esto es ya algo personal! jajaja. ¿que controles son? ¿textbox?
  #18 (permalink)  
Antiguo 27/10/2008, 02:44
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

Mira si quieres hacer la prueba para que entiendas a lo que me refiero, en una página Aspx crea una variable, y luego también en la página, mete un control Web. Luego te metes en el control web y pintas un botoncito, y probramas que pulsando en el botón del Control, modifiques el valor de la variable que creastes en la página aspx. Si lo logras, cuéntame como ;)
  #19 (permalink)  
Antiguo 27/10/2008, 08:46
Avatar de kennyhp  
Fecha de Ingreso: julio-2006
Mensajes: 370
Antigüedad: 17 años, 9 meses
Puntos: 5
Respuesta: Una pregunta tonta

No he podido mirarlo este fin de semana, a ver si entre hoy y mañana lo puedo mirar... (que me estoy actualizando la versión de visual studio y con lo que tarda la instalación...)
  #20 (permalink)  
Antiguo 28/10/2008, 05:49
 
Fecha de Ingreso: junio-2007
Mensajes: 327
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Una pregunta tonta

No te preocupes. Gracias por las molestias, cuando puedas y sin prisa ;)
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:38.