IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Petite question sur UpdateProgress


Sujet :

ASP.NET

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut Petite question sur UpdateProgress
    Bonjour,

    Je présente tout d'abord mes objectifs :
    On ouvre la page internet, on vois la page maître qui s'affiche avec le message d'attente, puis on charge les données et quand celles-ci sont chargés, elles s'affichent automatiquement à l'aide d'un DataBind sur la GridView.
    Pour plus d'informations.


    Ayant éventuellement besoin d'updatePanel, je me demandais comment ces derniers fonctionnaient ! Par exemple, lorsque l'on met un updatePanel dans la page aspx, peut-on décidé de n'afficher LORS du PREMIER PostBack uniquement ce qu'il y a entre les balises updatePanel ET la masterPage ?

    Si ce n'est pas possible, j'aurais souhaité pouvoir ouvrir ma page avec uniquement le message d'attente à l'aide d'une struture If Not (isPostBack) et à l'aide de la fonction endRequest de javaScript, recharger la page une fois la première publication effectué. Est-ce possible ?
    Car ceci ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(PageRequestManager_endRequest);
     
    function PageRequestManager_endRequest(sender, args) {
        prm.beginAsyncPostBack = true;
    }
    Je me fous de l'instruction "prm.beginAsyncPostBack = true;", car celle-ci a été mise sur point d'arrêt juste pour savoir si cette dernière est éxecuté, ce qui n'est pas le cas. (D'ailleurs, si vous connaissez la fonction JavaScript pour MyBase.OnLoad(e,args) )


    Merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Pourquoi dans mon code JavaScript, mes fonctions endRequest ou alors initializeRequest ne veulent pas fonctionner ?

    Je fais pourtant différents appels différents comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (!Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack())
        {
          Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        }
     
            function EndRequestHandler(sender, args) {
                alert("Pour savoir !!!");
            }
    Il rentre dans le premier If, mais ne rentren jamais dans le endrequest, même à la fin de la publication ! Idem lorsque je change pour initializeRequest..

    J'en profite pour demander, comme on rappelle le postBack (enfin la publication quoi ^^).
    Moi j'voulais faire onload(); mais il demande des paramètres, et ne connais pas sender et args !

    Merci d'avance.

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ton 1er if est trop restrictif, il suffit juste de mettre cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

  4. #4
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    J'enlève le If, mais même avec le If, l'instruction imbriqué était executé.
    J'ai essayer plusieurs types d'appels (tout ceci est dans un <script></script>).

    Penses tu que cela peut être du à un mauvais namespace ? Parce que j'ai mis le mien au pif, pourtant, mon script s'execute, mais partiellement ...)

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Je comprends pas trop ce que tu me racontes...

    Le EndRequestHandler n'est appelé que lors d'un PartialPostBack

  6. #6
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Fiou, c'est trop compliqué c'est partial PostBack !
    J'vais arrêter les rendus de pages partiel parce que je perd just mon temps : c'est compliqué et j'en ai pas spécialement besoin.

    Et d'ailleurs, tout à l'heure, j'avais un updatePanel et tout ça ... j'ai peut être just pas réussi à le mettre en marche xD.

    Bon, j'ai mis un ScriptManager avec EnablePartielRendering à true, et un UpdatePanel en mode conditionnel !
    Je fais mon appel ScriptManager1.Update() dans le page_load, mais rien ne se passe ! Mon IsInAsyncPostBack est à false après l'appel à la méthode Update ... C'est certainement la raison pour laquel mon End_Request n'est pas appeler ... Que puis-je faire pour éviter cela ?

    Mais existe-t-il une fonction JavaScript qui s'exécute après un PostBack, comme le EndRequest mais pour les PostBack normaux ?

  7. #7
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Tu confonds tout là.
    Je te conseille de te renseigner sur ASP.NET AJAX et de lire qqs tutos

  8. #8
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Merci du conseil, mais cela veut-il dire que tu n'as pas de réponses ? :s

    Existe-t-il alors une fonction JavaScript qui s'exécute après un PostBack, comme le EndRequest mais pour les PostBack complets ? Ou alors un contrôle définissant l'envoie de la publication ?

  9. #9
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Enkel Voir le message
    Merci du conseil, mais cela veut-il dire que tu n'as pas de réponses ? :s

    Existe-t-il alors une fonction JavaScript qui s'exécute après un PostBack, comme le EndRequest mais pour les PostBack complets ?
    Ca veut dire quoi après un postback?

  10. #10
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Désolé de mettre mal exprimé. Je vais essayé de te réexpliqué de façon concise ma situation :

    J'ai un site internet développé en ASP/VB.NET. Sur ce dernier, je dois afficher un message d'attente avant le chargement des données sur la BDD (prend du temps ..). Or sur ASP/VB, le principe du cycle de vie fait que l'on ne peut agir qu'AVANT publication (affichage) ormis les contrôles (et je ne veux pas de boutons). Donc je cherche une méthode pour atteindre mon objectif :
    - Utilisé un contrôle que l'utilisateur ne doit pas intéragir, un contrôle de fin de rendu
    - Une méthode ou fonction JavaScript qui agis à la fin du rendu de la page (comme le EndRequestHandler pour le rendu partiel, sauf que ce dernier ne marche pas )
    - Timer, qui regénère le cycle de vie de la page ASP tous les intervals, toutefois, les timers ne sont pas une valeur sûre :s

    Dans l'espoir de nous être compris. xD

  11. #11
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Enkel Voir le message
    - Une méthode ou fonction JavaScript qui agis à la fin du rendu de la page (comme le EndRequestHandler pour le rendu partiel, sauf que ce dernier ne marche pas )
    Suffit de mettre en bas de ta page un appel à ta fonction js
    <script>
    MyFunction();
    </script>

  12. #12
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Le problème est que j'ai une masterPage, donc je travais dans le ContentPlaceHolder2, le script se trouvais déjà avant </asp:Content>. Et l'appel à ma BDD se fait dans le VB.NET par le biais d'un WebService, donc même à la fin, mon explorateur va d'abord charger les données avant d'afficher un premier rendu !

    Merci de tes réponses tout de même .

  13. #13
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bon,
    - Tu ajoutes un UpdatePanel et tu mets dedans le control qui va afficher tes données et un bouton caché qui va déclencher l'appel à la DB.
    - Tu ne charges pas tes données lors du chargement de la page
    - Tu ajoutes un bout de script en bas de ta page qui va simuler un clic sur le bouton ci dessus et donc faire un partial post back. Ton updatepanel se mettra à jour qd les données en provenance de ta DB auront été récupérées

  14. #14
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    Je te remercie de tes réponses, lutecefalco.

    J'ai finalement réussi a trouvé une autre solution, qui me semble assez bien.

    Pour les gens qui aurais les mêmes problème que j'ai rencontré, j'écris ma fonction solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            /* Appel BDD et stockage dans GridView */
            GridView1.DataBind()
            Label2.Visible = False   // Efface message d'attente
        Else
            Label2.Visible = True     // Affiche message d'attente
            Page.RegisterStartupScript("SCRIPTNAME", "<script language='javascript'>__doPostBack('GridView','');</script>")
        End If
    End Sub
    Il ne me reste plus qu'a gérer les erreurs de connexions.

  15. #15
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    C'est quasiment ce que j'ai dit

    Le truc avec ton code, c'est dès qu'il y aura un postback de ta page, tu referas un DataBind, c'est pas forcément utile

  16. #16
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 30
    Par défaut
    En réalité, pas vraiment, car l'appel de ma BDD est fait dans une structure If pour la gestion des erreurs, je ne voulais pas implémenté le code donné pour une meilleur lisibilité du problème.

    De plus, mon DataBind se trouve déjà dans l'appel de la fonction (qui fait appel à la BDD), j'ai donc resupprimé celui-ci. (je l'avais mis parce que des fois, la gridview ne s'affiche pas, et rien ne s'affiche : pas d'erreur, gridview existante, juste pas databinder alors qu'elle est censé l'être à l'aide d'un ByRef).

    Dans tous les cas, tout semble fonctionné ! Merci de m'avoir répondu tout au long de mon problème.

    Le pire est que j'avais déjà essayé de faire ça, mais au début, je souhaitais évité d'utilisé du JavaScript, donc j'avais utilisé la commande Redirect (je sais pas si tu vois de quelle commande je parle).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  2. [Visuel XP] Petite question sur le theme XP...
    Par ZoumZoumMan dans le forum C++Builder
    Réponses: 12
    Dernier message: 20/01/2005, 14h41
  3. petite question sur le composant IBX ...
    Par vbcasimir dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/01/2005, 10h33
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo