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 Ajax Discussion :

Chargement de la page


Sujet :

ASP.NET Ajax

  1. #1
    Membre très actif
    Profil pro
    Expert technique .NET
    Inscrit en
    Août 2007
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Expert technique .NET

    Informations forums :
    Inscription : Août 2007
    Messages : 272
    Par défaut Chargement de la page
    Salut !

    Venant du monde des clients lourds, je découvre l'AJAX.
    Comment faire pour afficher une image d'attente lors des chargements de ma page ?

    Merci d'avance.

  2. #2
    Membre chevronné Avatar de Redouane
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    435
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 435
    Par défaut
    Bonjour,

    Essaye de voir UpdateProgress de Ajax :

    http://www.asp.net/AJAX/Documentatio...sOverview.aspx

    Tu peux mettre dedans l'image de chargement que tu préfere, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:UpdateProgress ID="UpdateProgress1" runat="server">
    <ProgressTemplate>
    <asp:Image ID="imgChargement" runat="server" ImageUrl="CheminImageDeChargement" />
                                    <br />
                                    <strong>Chargement en cours ...</strong>
    </ProgressTemplate>
    </asp:UpdateProgress>
    Bonne courage

  3. #3
    tomny
    Invité(e)
    Par défaut
    Bonjour,
    moi j'ai utilisé directement jQuery dans mon dernier projet et du coup pas de composant updateprogress.
    Juste une div qui apparait au lancement de la commande ajax et je la re-cache une fois la commande terminée.
    C'est à peu près la même chose mais avec du code que je maitrise plus et moins de pollution du fichier html client, le javascript étant dans un fichier à part.

  4. #4
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Peux tu nous montrer comment tu fais en jquery ?

  5. #5
    tomny
    Invité(e)
    Par défaut
    Voici le code de la page aspx:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Subversion.Master"
        CodeBehind="Creation.aspx.vb" Inherits="SVN_VB.WebForm1" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
     
        <script type="text/javascript" src="Script/creation.js"></script>
     
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
        <asp:ScriptManager ID="sm1" runat="server">
        </asp:ScriptManager>
        <div class="titrePage">
            Cr&eacute;ation de projet</div>
        <div id="cadrePrincipal">
            <div id="nomProjet">
                <asp:Label ID="lbNomProjet" runat="server">Nom du projet &aacute; cr&eacute;er :</asp:Label>
                <asp:TextBox ID="tbNomProjet" runat="server"></asp:TextBox><br />
                <asp:RegularExpressionValidator ID="revNomProjet" runat="server" ControlToValidate="tbNomProjet"
                    ErrorMessage="Merci de saisir un nom de projet valide.<br/>Il doit commencer par une lettre, et ne contenir que des lettres, des chiffres ou un des symboles suivant : - _ ."
                    ValidationExpression="^[a-zA-Z]([a-zA-Z0-9][_.-]?){1,}$" /><br />
            </div>
            <fieldset>
                <legend>Options de cr&eacute;ation</legend>
                <asp:CheckBox ID="cbCreerReps" runat="server" Text="Cr&eacute;er les r&eacute;pertoires trunk, branches, tags (cette op&eacute;ration prend environ 40s)"
                    Checked="True" /><br />
                <asp:CheckBox ID="cbHookGemini" runat="server" Text="Mettre le hook Gemini en place" /><br />
            </fieldset>
        </div>
        <div id="boutonCreer" class="ADroite">
            <asp:UpdatePanel ID="up1" runat="server">
                <ContentTemplate>
                    <asp:Button ID="btCreerProjet" runat="server" Text="Cr&eacute;er le Projet" OnClientClick="bCreerProjetClick()"
                        OnClick="btCreerProjet_Click" />
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        <div id="imageAttente" class="hidden ADroite">
            <img src="Images/attente.gif" id="img_attente" alt="En cours..." />
        </div>
        <div id="messageErreur">
        </div>
        <div id="messageOk">
        </div>
    </asp:Content>
    Le update panel est utilisé afin de lancer le codebehind et le javascript, mais tout pourrait être lancer par le javascript.

    Voici la code behind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Public Partial Class WebForm1
        Inherits System.Web.UI.Page
     
        ''' <summary>
        ''' Initialisation de l'objet session informant sur l'etat du processus de creation du depot
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        ''' <remarks></remarks>
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Session("statusProcess") = New StatusProcess()
        End Sub
     
        ''' <summary>
        ''' Appel du controleur afin de créer le depot
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        ''' <remarks></remarks>
        Protected Sub btCreerProjet_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btCreerProjet.Click
            Dim createur As SVN_VB.Controleur.controleurCreation = New SVN_VB.Controleur.controleurCreation(Session("statusProcess"), cbHookGemini.Checked, cbCreerReps.Checked)
            Dim th As Threading.Thread = New Threading.Thread(AddressOf createur.creation)
            th.Start(tbNomProjet.Text)
        End Sub
     
        ''' <summary>
        ''' Méthode accessible directement par url, afin de permettre de faire de l'ajax
        ''' </summary>
        ''' <returns>un objet sotcké en session contenant les infos du processus en cours</returns>
        ''' <remarks></remarks>
        <System.Web.Services.WebMethod(True)> _
        Public Shared Function StatusProces()
            Return System.Web.HttpContext.Current.Session("statusProcess")
        End Function
     
    End Class
    Et pour finir le javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    var id = 0;
     
    function appelStatus() {
        $.ajax({
            type: "POST",
            url: "Creation.aspx/StatusProces",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                $("#messageOk").html(msg.d.ok);
                $("#messageErreur").html(msg.d.erreur);
                if (msg.d.fin) {
                    clearInterval(id);
                    $("#imageAttente").addClass("hidden");
                    $("#boutonCreer").removeClass("hidden");
                }
            },
            error: function(msg, status) {
                $("#messageErreur").html(msg.responseText);
            }
        });
    }
     
    function bCreerProjetClick() {
        //appelStatus();
        id = setInterval(appelStatus, 1000);
        $("#boutonCreer").addClass("hidden");
        $("#imageAttente").removeClass("hidden");
    }
    Dans la master page on fait l'appel à jQuery.

    Voila, si vous voulez des commentaires sur certaines parties n'hésitez pas

  6. #6
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    merci

  7. #7
    tomny
    Invité(e)
    Par défaut
    De rien, je suis la pour apprendre mais aussi pour aider et partager mon savoir

    je répètes qu'il ne faut pas hésiter sur les questions mais aussi sur les remarques et possible coquille...
    Ce code est en production et fonctionne, donc tout problème possible détecté est le bienvenue :p

Discussions similaires

  1. [iframe]pb de chargement d'une page
    Par Destampy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/05/2005, 11h19
  2. Chargement d'une page
    Par krfa1 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/05/2005, 09h53
  3. [JSP] pbl chargement d'une page JSP
    Par Shiryu44 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 30/03/2005, 10h49
  4. Réponses: 4
    Dernier message: 08/06/2004, 09h01
  5. Attendre la fin du chargement de la page dans un WebBrowser
    Par core1 dans le forum Web & réseau
    Réponses: 5
    Dernier message: 15/06/2003, 04h12

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