Originariamente inviato da tatina
Mi serve creare una pagina di attesa che venga visualizzata mentre viene eseguita una query molto lunga.
ho provato con un javascript che visualizzava e nascondeva un tag DIV nella stessa pagina dei risultati, ma non funzionava perchè veniva visualizzato sempre e solo 2 secondi prima di avere i risultati e non durante tutta l'attesa.
Ho provato anche con una pagina intermedia(tra quella che scatenava la ricerca e quella che visualizzava i risultati), ma nemmeno così funziona, perchè la pagina di attesa in questo caso non viene proprio vista in nessun momento!
qualche suggerimento?
Grazie!
Ti do un'idea.
Ho una pagina a.aspx che, alla pressione di un tasto deve fare partire un query lunga. Mi serve che compaia un messaggio di attesa durante l'esecuzione e che scompaia alla fine della query, magari con un messaggio di query riuscita o altro...
Allora, nella pagina a.aspx metto un <iframe name="nascosto" width="0" height="0"></iframe>, magari con stile hidden (non nascosto se no, non funziona con NN)
Aggiungo un <form id="form2" name="form2" target="nascosto" action="b.aspx"></form> che ha il target uguale al name dell'iframe.
Aggiungo un pulsante html che ha questo evento:
codice:
function button1_onclick() {
document.getElementById("div1").style.display = "";
document.form2.submit();
}
in pratica, visualizza il messaggio di attesa e lancia la pagina di esecuzione query
aggiungo la funzione per eliminare il messaggio alla fine della query:
codice:
function query_finita()
{
document.getElementById("div1").style.display = "none";
window.alert("Query finita");
}
la pagina che esegue la query, quando raggiunge il browser, lancia la funzione query_finita().....
pagina a.aspx
codice:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="a.aspx.vb" Inherits="corso_apogeo.a"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>a</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script id="clientEventHandlersJS" language="javascript">
<!--
function button1_onclick() {
document.getElementById("div1").style.display = "";
document.form2.submit();
}
function query_finita()
{
document.getElementById("div1").style.display = "none";
window.alert("Query finita");
}
//-->
</script>
</HEAD>
<body MS_POSITIONING="FlowLayout">
<form id="Form1" method="post" runat="server">
<INPUT type="button" value="Lancia query" id="button1" language="javascript" onclick="return button1_onclick()">
<div id="div1" style="display:none;LEFT: 100px; WIDTH: 100px; COLOR: white; POSITION: absolute; TOP: 100px; HEIGHT: 50px; BACKGROUND-COLOR: blue">Query in esecuzione</div>
<iframe name="nascosto" width="0" height="0"></iframe>
</form>
<form id="form2" name="form2" target="nascosto" action="b.aspx"></form>
</body>
</HTML>
pagina b.aspx (fa la query)
------------------------------
codice:
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="b.aspx.vb" Inherits="corso_apogeo.b2"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>b</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name=vs_defaultClientScript content="JavaScript">
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
<script id="clientEventHandlersJS" language="javascript">
<!--
function window_onload() {
if(parent.query_finita != undefined) parent.query_finita();
}
//-->
</script>
</head>
<body MS_POSITIONING="FlowLayout" language="javascript" onload="return window_onload()">
<form id="Form1" method="post" runat="server">
</form>
</body>
</html>