Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Paso de Datos Modal y Padre

728 views
Skip to first unread message

AngarZafir

unread,
Jan 12, 2007, 8:01:05 AM1/12/07
to
hola amigos, tengo un pequeño problema...

tengo una pagina aspx con un dropdownlist(ddl1) y un linkbutton que me
abre una ventana modal. El (ddl1) lo lleno por el pageload, con un
dataset que hace un filtroen la data. Bien... ahora, en la ventana
modal tengo otro dropdownlist(ddl2) con un button. Lo que tengo hata
ahopra es esto... el linkbutton envia a la ventana modal el parametro
que filtro los items de (ddl1), en (ddl2) apareceran todos los
parametros posibles de filtro y me deja seleccionado el actual.


Bien hasta alli, ahora necesito que al seleccionar otro filtro y darle
al button, me envie el nuevo parametro a la padre y realice otra
consulta para llenar de nuevo a (ddl1). Pero no se como hacerlo, si
tengo que armar un evento o como... necesito ayuda con eso por favor!
No se en que evento tomar el dato y armar la consulta... pence en
hacerlo en el pageload del padre, ya que alli mismo hago el primer
llenado de (ddl1) pero no se si al cerrar la ventana modal pueda
activar el pageload y que tan bueno sea hacerlo!


Espero su colaboración

Jose A. Fernandez

unread,
Jan 12, 2007, 12:29:46 PM1/12/07
to
Hola AngarZafir
Este comportamiento que necesitas en una pagina web es un poco
"doloroso" hacerlo a mano y asi como pides.. ya que
1) Debes Abrir al popup y enviarle como paraemtro
2) Seleccionar y luego psar el valor seleccionado con JS a una
variable o control oculto en la pagina padre
3) Luego de pasar el valor hay que ejecutar un submit de la pagina
padre y tambien cerrarse
4) debes caputar el submit del formulario de la pagina padre y
realizar la accion que necesitas


Por suerte tenemos a nuestra disposicion otras alternativas...
Particulamente no me guista y tampoco recomeidno ventanas popup (ni
para seleccionar un fecha como un datepicker) hay metodos mas
"lindos"/usables para el usaurio y mejor para nosotros...(y no estar
tocando pasajes de valores entre ventanas en el navegador, ya que aqui
el .net,o mejor dicho el entorno no no da mucho...) ya que se centra
ams en eventos del servidor

Cuales son las opciones?

OPCION 0: jeje la que te comentaba anteriormente
------------------------
Algo asi en la ventana hija
a) Aqui es facil de entender
function EnviarDatos(valor) {
window.opener.document.form1.txtProductoId.value=valor;
window.opener.document.form1.submit();
window.close();
}

b) o le indicas por url, no seria un postback ni un submit sino que
como que recargas la pagina o mejor dicho la cargas con un valor
window.opener.location='TuPaginaDetalle.aspx?ProductoId=tuValor'

Luego necesitas realixar las acciones correspondientes
Aqui tienes algo mas
http://groups.google.com.ar/group/microsoft.public.es.dotnet.aspnet/msg/94748002fd843de9?hl=es&

OPCION 1: Ventana modal dentro de la misma pagina
-------------------------------------
Mira tambien estos enlances alguno te debe serviir
http://prototype-window.xilinus.com/samples.html

La idea es que cargues ese valor dentro de esta ventana emergente (sin
popup) es un COntenedor DIV con uinos controles y le ddes un boton de
RECARGAR la pagina y realizas las acciones correspondientes... o sea
TODO DENTRO DE LA MISMA PAGINA


OPCION 2:
-------------------------------------
Aui esta mi recomendacion, ya que estas trabajando con asp.net 2.0.
Utilizando ASP.NET AJAX Control Toolkit tienes este control o
comportamiento
http://ajax.asp.net/ajaxtoolkit/ModalPopup/ModalPopup.aspx
Mria lo que realiza podrias tener lo mismo que la opcion1 pero un poco
mas integraod al entorno y luego puedes recargar la pagina para que le
des las acciones correspondientes

Este comportamiebnto solo agrega la ventana modal el resto deberas
realizarlo tu, ya sea la recarga de la pagina como cualquier evento del
lado del cliente


Espero que te sirva de ayuda o guia
_________________________
Jose A. Fernandez

AngarZafir ha escrito:

AngarZafir

unread,
Jan 12, 2007, 1:58:54 PM1/12/07
to
Hola, gracias por responder, he elegido la opcion 0 por falta de tiempo
y copie la función que me diste, ahora, resulta que no encuentra al
label en donde enviare el dato del hijo. Asi lo tengo declarado:

<asp:Label ID="lblcomp" runat="server" Style="visibility:hidden"
Visible="true"></asp:Label>

No se si es porque el label esta dentro de una tabla... además, asi
paso la función de java al boton de la emergente.

btesc.Attributes.Add("OnClick", "EnviarDatos(" &
ddlcomp.SelectedValue & ");")

Quisiera saber en que estoy fallando, porque no me ubica el label??

Gracias ante todo!

Jose A. Fernandez

unread,
Jan 12, 2007, 6:49:00 PM1/12/07
to
El Label es un webcontrol que en cliente se renderiza y el nombre queda
un poco "retorcido" por llamarlo de alguna manera vulgar...
Ya que depende del contenedor donde este
no puedes hacer esto:
window.opener.document.form1.lblcomp.value=
ya que el control HTML lblcomp no existe
para saber el Id del cliente esta la propiedad lblcomp.ClientId del
webcontrol o sea haciendo rapidamente queda algo asi
window.opener.document.form1.<%=lblcomp.ClientId%>.value=


Eso por un lado...
Mirando tu funcion EnviarDatos, debe escribir el texto entre comillas
simples o sino estas pasando un objeto y no una cadena
Quedaria algo asi


btesc.Attributes.Add("OnClick", "EnviarDatos('" &
ddlcomp.SelectedValue & "');")

Espero que te sirva
_______________________
Jose A. Fernandez


AngarZafir ha escrito:

> Hola, gracias por responder, he elegido la opcion 0 por falta de tiempo

AngarZafir

unread,
Jan 15, 2007, 9:25:12 AM1/15/07
to
Gracias Jose por la respuesta, ahora hay un problema al abrir la
ventana modal, me dice que no esta declarado el control lblcomp. Claro
que no esta por que ese control no esta en la ventana modal ino en la
padre. como puedo hacer para resolverlo??

Estoy programando con visual, por eso no coloco las comillas, al
colocar las comilla sme lo trata como si fuese un comentario.. Espero
que me ayudes por favor! Gracias!

function EnviarDatos(valor) {
window.opener.document.form1.<%=lblcomp.ClientId%>.value=valor;

window.opener.document.form1.submit();
window.close();
}

Jose A. Fernandez

unread,
Jan 15, 2007, 10:07:53 AM1/15/07
to
Bueno aqui quiero que pienses conmigo la mejor alternativa
(esto es un problema de vetnanas popup y .NET, ya que estan
involucradas en ambitos distintos, uno en el cliente y otros en el
servidor)

Como bien lo decis no puedes recuperar el id del lblcomp porque no
existe en esa pagina...

Opcion1:
----------------
Escribes el Id directamente en la pagina. Esto es sino piensas modifcar
la pag. padre, porque el id cambia depende del lugar donde se ecnuentre
el control
o sea escribies directamente asi

window.opener.document.form1.ctl00_Contenido_panelEjemplo1_lblcomp.value=valor
(Para esto debes mirar el codigo HTML resultante de la pagina padre y
ver el id que tiene tu control lblcomp)
... muy artesanal no?

Opcion 2:
---------------
Puedes pasar este ID por querystring, en el momento que abres la
ventana popup y lo recuperas
SOlucion parecida a la anterior solo que es un poco mas automatica
Alli deberias escribir el id

window.opener.document.form1.<%=Request.QueryString("label")%>.value=valor

Cuando llamas al la ventana popup deberias hacer algo asi (en la pagina
padre)
window.open("/paginasHija.aspx?label=<%=lblcomp.ClientId%>", .......


Estas dos son las que se me ocurre para pasar el Id (CLientId) de un
control de lapagina padre a la hija
Si se te ocurre otros... avisanos por aqui

Espero que te sirva de ayuda o guia

_______________________
Jose A. Fernandez

AngarZafir ha escrito:

> Gracias Jose por la respuesta, ahora hay un problema al abrir la

0 new messages