PDA

Ver la Versión Completa : Visualizar una pagina asp sin que ocupe toda la pantalla


mamen
10-11-2004, 09:58:30
Es posible abrir una página sin que ocupe toda la pantalla y que debajo sigas viendo la pagina actual en la que te encuentras??? Como si fuera una especie de messagebox.

Con Response.Redirect(.aspx) se puede indicar el tamaño de presentación de dicha página???

Es posible mostrar dos paginas aspx al mismo tiempo (una principal que ocupe toda la pantalla y otra secundaria más pequeña)???

Muchas gracias por todo. Chao.

burasu
10-11-2004, 12:25:43
Hola Mamen, yo ciertamente no tengo mucha idea por no decir nula idea de ASP, pero eso que tu quieres hacer lo hago con javascript.

La sentencia sería la siguiente:


<script language="JavaScript">
<!--
function Abrir_Ventana(el_url) {
var especificaciones="top=0, left=0, toolbar=no,location=no, status=no,menubar=no,scrollbars=no, resizable=no, width=400,height=400"
var titulo="Titulo"

window.open(el_url,titulo,especificaciones);
}
//-->
</script>


Eso sería respecto a abrir una ventana con un tamaño determinado. Me imagino que el cargar dos páginas a la vez pues puede ser incluyendo un código de ejecución como esté en la cabecera header de la página de mayor tamaño.

Pero como te he dicho esto lo hago yo en javascript y no se si te puede valer.

Salu2

__hector
10-11-2004, 13:55:11
Si, vale javascript y la nueva ventana.

y tambien puedes usar frames o iframe (en IE) para incluirla en la misma ventana, o showmodaldialog para mostrar una ventana emergente que evite que se trabaje en la ventana que esta debajo. En fin, un mar de opciones

mamen
11-11-2004, 11:00:15
Vale eso me sirve, pero yo tengo el botón para que me abra esa ventana en un datagrid, cómo le digo que al presionar dicho botón llame a esa función JavaScript????

He probado en el código aspx de la página a poner en la columna botón del datagrid el evento onclick pero me dice que no existe esta propiedad.

<asp:buttoncolumn text="Desglose" onclick="MostrarDetalle"> (MostrarDetalle es la función en javascript)

Sabes si existe alguna propiedad similar al onclick en asp:buttoncolumn???

Otra opción posible sería desde el evento ItemCommand. Asi es como lo tengo ahora

if e.CommandName.ToString <> 'Page' then begin
(Si no es el botón de paginación entonces es el botón desglose el que he pulsado, entonces almaceno los datos que me interesen y a continuación muestro la página)

Session['codmpio']:=lblcodmpio.Text;
Session['codtasa']:=e.Item.Cells[3].Text;
Session['nmpio']:=dlstmpiosp.SelectedValue.ToString;
Session['otrosannos']:='False';
Response.Redirect('fdetalletasa.aspx');

Desde aquí podria llamar a una función javascript para que me muestre la pagina fdetalletasa.aspx????????????????

end;


Muchas gracias por todo. Chao.

__hector
11-11-2004, 14:24:38
yo lo hago con un truquito ;)

Antepongo un objeto html de tipo label que me llame la funcion javascript.
<label onclick=funcion()>
<control:asp>
</label>

Pero en tu caso, como necesitas los datos que te devuelve el objeto e (para saber sobre que item se pulso), puedes, en el evento onitemcommand, eliminar el uso de esas variables de sesion si las utilizas para esta operacion, y construir una funcion javascript que te abra la ventana en cuestión. Algo como:


if e.CommandName.ToString <> 'Page' then begin
//(Si no es el botón de paginación entonces ....)

StringBuilder str = new StringBuilder();
str.Append("<script> window.open('pagina.aspx?codtasa=")
str.Append(e.Item.Cells[3].Text);
str.Append(", nombreventana, parametrosdelaventana");
str.Append("</script>");
Page.RegisterStartupScript(str.ToString());

mamen
12-11-2004, 09:52:40
Este código va en el evento ItemCommand del DataGrid no?????? Yo lo he puesto ahí pero no me funciona. A continuación te lo muestro

if e.CommandName.ToString <> 'Page' then begin


'Estas variables de sesion no las he quitado porque creo que no afectan
Session['codmpio']:=lblcodmpio.Text;
Session['codtasa']:=e.Item.Cells[3].Text;
Session['nmpio']:=dlstmpiosp.SelectedValue.ToString;
Session['otrosannos']:='False';

str:=System.Text.StringBuilder.Create;
str.Append('<script> window.open("C:\InetPub\wwwroot\AplicBDC\fdetalletasa.aspx?codtasa=');
str.Append(e.Item.Cells[3].Text);
str.Append('"');
str.Append(', "Detalle Tasa", "top=0, left=0, toolbar=no,location=no, status=no,menubar=no,scrollbars=no, resizable=no, width=400,height=400"');
str.Append('</script>');
pp:= str.ToString();
Page.RegisterStartupScript('s1',str.ToString()); //Para que sirve este método????Se supone que con este se ejecuta el script????


No me da ningún error, pero no me hace nada cuando pulso dicho botón del datagrid

Espero tu respuesta. Muchas gracias por todo.

Chao

__hector
12-11-2004, 14:32:40
Trabaja alrededor de esa funcion, dale debug a la pagina, imprime por ahi el contenido del stringbuilder, porque deberia funcionar. El Page.RegisterStartupScript, segun el msdn hace lo siguiente:


Allows ASP.NET server controls to emit client-side script blocks in the Page.

[Visual Basic]
Overridable Public Sub RegisterStartupScript( _
ByVal key As String, _
ByVal script As String _
)

Similar to the RegisterClientScriptBlock method, this method emits the script just before the closing tag of the Page object's <form runat= server> element. The script block is emitted as the object that renders the page is defined, so you must include both tags of the <script> element.

By identifying the script with the key, multiple server control instances can request the script block without it being emitted to the output stream twice.

Any script blocks with the same key parameter values are considered duplicates.

Note Remember to include HTML comment tags around your script so that it will not be rendered if a requesting browser does not support scripts.



Consulta un poco de la ayuda (no se si delphi traiga documentacion del framework), pero tengo ese codigo trabajando en muchas paginas, registrando scripts que presentan alertas, abren ventanas, etc.