Salu2,
José Mª Fueyo
Tanto tiempo, espero que estés muy bien..
Sobre tu pregunta, así como puedes "ejecutar" un reload de la página hija a
la página padre... perfectamente puedes ejecutar una rutina "javascript".
ejemplo:
window.opener.MiFuncionJavaScript();
y en esta función puedes invocar el evento de algún botón o el llenado de
grilla, revisa la función "__doPostBack" que genera .net en forma automática
en el cliente, sino la tienes puedes crear una copia que debe ser igual a
esta:
function __doPostBack(eventTarget, eventArgument) {
var theform = document.Form1;
theform.__EVENTTARGET.value = eventTarget;
theform.__EVENTARGUMENT.value =
eventArgument;
theform.submit();
}
--
Saludos,
Jhonny Vargas P.
Santiago de Chile
... el viejo guatón Vargas...
"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje de
noticias:DF8DC266-BB87-4B12...@microsoft.com...
Salu2
--
José Mª Fueyo
Dim script As New StringBuilder
script.Append("<script language='javascript'> {")
script.Append("opener.location.reload();")
script.Append("window.close();}")
script.Append("</script>")
Response.Write(script.ToString)
Esto me actualiza la página llamante y me cierra el formulario llamado.
Peeeero...me sigue saliendo una advertencia con dos botones (Reintentar y
Cancelar):
"Para mostrar de nuevo ésta página web, Internet Explorer debe volver a
enviar la información que ya envió anteriormente.
Sí estuviera realizando una compra, haga click en cancelar para evitar que
la transacción se realice dos veces. De otra forma, haga click en Reintentar
para volver a mostrar la página web."
¿Alguna idea al respecto...? gracias.
Jhonny Vargas tiene razón... tu puedes usar la función __doPostBack y
"forzar" un PostBack... de esa manera el browser no te dará ningún warning.
Ejemplo:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
bool processedOnLoad= false;
if (IsPostBack)
if (Request["__EVENTARGUMENT"] == "_forcePostBack_")
{
Label2.Text = String.Format("Client Button Clicked -
{0}", DateTime.Now.ToString());
processedOnLoad = true;
}
Label1.Text = String.Format("{0} - Process On Load: {1}",
(IsPostBack) ? "PostBack" : "No PostBack",
processedOnLoad);
}
protected void Button2_Click(object sender, EventArgs e)
{
Label2.Text = String.Format("Server Button Clicked - {0}",
DateTime.Now.ToString());
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
// <!CDATA[
function Button1_onclick() {
// Esta function te retorna "__doPostBack" (por ahora)...
es mejor usar este metodo porque Microsoft puede
// decidir algun dia renombrear el nombre de la funcion
cliente.
<%=this.Page.GetPostBackEventReference(this,
"_forcePostBack_") %>
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<br />
<input id="Button1" type="button" value="Client Button"
onclick="return Button1_onclick()" />
<br />
<asp:Button ID="Button2" runat="server" Text="Server Button"
onclick="Button2_Click" />
<br />
</div>
</form>
</body>
</html>
Mas information:
http://aspalliance.com/895_Understanding_the_JavaScript___doPostBack_Function
Espero que te ayude,
Daniel.
Salu2
--
Jos� M� Fueyo
function Refrescar()
{
_doPostBack('grvDatos','');
}
donde grvDatos es el control gridview que quiero actualizar.
En la página llamada, dentro del botón que hace la inserción de datos, y
tras todo el proceso de manejo de dichos datos, he puesto éste código (dentro
del evento click del botón "actualizar"):
Dim script As New StringBuilder
script.Append("<script language='javascript'> {")
script.Append("window.opener.Refrescar();")
script.Append("window.close();}")
script.Append("</script>")
Response.Write(script.ToString)
Pero no me hace nada. Es más, ni siquera cierra la ventana y creo que me
altera algo del diseño (tamaño de letra aplicada, etc...).
¿Cual es el error? ¿alguna sugerencia?
Gracias
Ese código JS no te va alterar el diseño... así que ese es otro error.
(revisa tus clases CSS)
Acerca de lo que quieres hacer.... tu función refrescar (pienso yo)
debería ser:
function Refrescar()
{
// Comienza con 2 "_"
__doPostBack('__Page','_refrescar_grvDatos_')
}
y luego en el Page_Load (en el servidor) tendrias algo asi:
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack) {
if (Request["__EVENTARGUMENT"] == "_refrescar_grvDatos_") {
RefrescarGrid();
}
}
}
Donde "RefrecarGrid" en un método que carga los datos de tu DB y enlaza
el Grid.
Daniel.
Sashka
"José Mª Fueyo" <jmf...@NOSPAMya.com> escribió en el mensaje de
noticias:6093BCFD-1149-4BCF...@microsoft.com...