Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42

    [asp.net - c#] loading message

    Ciao a tutti
    vorrei inserire nella mia pagina un loading message da far visualizzare quando il programma sta caricando dei dati ed il caricamento è lento.
    A tal fine ho inserito un <div> nella mia pagina asp.net:

    <div id="loading" class="loading" runat="server">Attendere il caricamento della pagina...</div>

    e ho creato il codice che mostra e nasconde il div.
    Il codice funziona perfettamente...solo che viene visualizzato e nascosto subitissimo (in pratica non si vede)...mentre la pagina resta "in attesa e senza messaggio" mentre fa il caricamento della pagina.

    Qualcuno sa come devo fare per far vedere il loading message fino alla fine del caricamento della pagina?

    Grazie....
    Pat
    Pat

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Spostata nel forum di ASP.NET.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    ciao, in teoria dovresti rendere visibile il div da subito, e nasconderlo con l'evento window.onload.

    è un problema javascript.

    Posta comunque il codice che vediamo di metterlo a posto.
    ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42

    il codice...

    All'inizio del mio evento richiamo la funzione javascript in questo modo:

    ScriptManager.RegisterStartupScript(root, typeof(String), "", "<script>this.hideMessage()</script>", false);

    alla fine invece richiamo
    ScriptManager.RegisterStartupScript(root, typeof(String), "", "<script>this.showMessage()</script>", false);

    il javascript contiene le funzioni

    function showMessage() {
    document.getElementById("loading").style.display = "block";
    }



    function hideMessage() {
    document.getElementById("loading").style.display = "none";
    }


    e la pagina asp contiene il div

    <div id="loading" class="loading">Attendere il caricamento della pagina...</div>
    Pat

  5. #5
    con l'istruzione ScriptManager.RegisterStartupScript, inserisci il codice javascript alla fine della pagina HTML generata.
    Quindi le due funzioni vengono richiamate nello stesso momento; ovvero alla fine del caricamento di tutta la pagina (in pratica come se tu le avessi agganciate all'evento onLoad del BODY o del document.

    Invecie devi fare in modo che la Show venga richiamata immediatamente, mentre la Hide va bene alla fine.
    Inoltre devi attivare il Response.Buffer=false della pagina aspx

    Per richiamare la prima immediatamente, potresti usare questo metodo:
    codice:
    <html>
        <head>
        <script type="text/javascript">
            function hideMessage() {
                //...
            }
            function showMessage() {
                //...
            }
        </script>
    </head>
    <body>
    <div id="loading" class="loading" runat="server">Attendere il caricamento della pagina...</div>
        <script type="text/javascript">showMessage();</script>
    tutto il resto della pagina
    in questo modo la showMessage viene richiamata immediatamente, mentre la hideMessage viene richiamata in fondo alla pagina come prima.

    ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    42
    io lo so che rompo ...ma come faccio però per richiamare la showMessage da un punto x interno al mio codice? nel senso...premo un pulsante e voglio che questo, come prima istruzione, visualizza il loading message...e come ultima lo tolga.
    Ora, facendo come dici tu, il messaggio viene visualizzato solo all'inizio del caricamento della pagina....ma durante come si fa??
    Grazie....
    Pat
    Pat

  7. #7
    in che senso durante? quando fai un submit di un form con un pulsante?

    NON PUOI in questo caso. per farlo devi per forza utilizzare chiamate ajax.

    Devi usare quindi UpdatePanel ed UpdateProgress

  8. #8
    Non ho visto il codice completo, ma a quanto pare la tua pagina segue il classico schema del postback di asp.net. Quando tu scateni un evento, richiamando la funzione associata nel code behind, automaticamente avviene il postbak e cioè l'intera pagina viene rigenerata.
    Quindi appena tu fai comparire la scitta "attender sto caricando........" subito sconpare , in quanto quella pagina viene distrutta per poi essere aggiornata con quella di postbach appunto. Per quello che chiedi , devi usare le tecniche ajax. In asp.net puoi usare gli update panel che fa l refresh parziale sono del pannello e non dell'inera pagina. E' più difficile spiegarlo che farlo. Comunque se posti il codice dell'inetra pagina posso darti una mano
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  9. #9
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Usate jQuery, update panel e progress utilizzano la vecchia Microsoft Ajax Library
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  10. #10
    ciao XWolverineX,
    grazie per il tuo consiglio.

    In effetti utilizzare la tecnologia AJAX "pura" sarebbe la soluzione migliore (sempre che sia possibile stabilire una migliore in assoluto).
    ma come ben saprai, tutto dipende anche da esigenze, tempistiche, ecc. ecc.

    Sicuramente introdurre la tecnologia AJAX all'interno di un sito già esistente, comporta la ristrutturazione di tale sito e l'implementazione di servizi e/o "layer", che potrebbe essere abbastanza oneroso.
    Una soluzione che può essere una buona "alternativa", potrebbe essere appunto l'utilizzo del partial rendering con Updatepanel.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.