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 :

Problème lors d'un clic sur bouton, pas de refresh avec l'ajax


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Problème lors d'un clic sur bouton, pas de refresh avec l'ajax
    Bonjour,

    J'ai un soucis. Lorsque je clique sur un bouton, j'aimerais qu'un GridView se refraichisse dans la page, à chaques nouvelles entrées.

    Le soucis est qu'il ne refraichit rien du tout, et attend que la méthode (très lourde) que j'appelle soit terminée (celle appellée avec l'event du boutton click).

    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
     
    <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
     
            <ContentTemplate>
     
            <asp:Button ID="ButtonLoc" runat="server" Height="22px" Text="Localise!"
                onclick="ButtonLoc_Click" />
     
        </p>
        <p>
            <asp:TextBox ID="TextBoxResult" runat="server" Width="726px"></asp:TextBox>
        </p>
        <p>
            <asp:GridView ID="GridView1" runat="server" Width="723px" 
                onrowcreated="GridView1_RowCreated">
            </asp:GridView>
        </p>
                <p>
                    <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
                </p>
            </ContentTemplate>
            <Triggers>
                  <asp:AsyncPostBackTrigger ControlID="GridView1" EventName="RowCreated" />
            </Triggers>
            </asp:UpdatePanel>

    Pour l'instant j'essaie seulement d'afficher la date du jour dans un label lorsqu'un row s'ajoute dans mon GridView

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
            {
                Label1.Text = DateTime.Now.ToString();
            }
    Après divers tests, si je mets un timer qui m'affiche la date du jour toutes les secondes (donc j'utilise le timer dans le trigger), ça marche nickel JUSQU'A ce que je clique sur le boutton. Là, plus rien ne se passe jusqu'à ce que mon event soit terminé. (Je répète que c'est une méthode lourde, qui peut prendre jusqu'à 45 secondes pour se terminer sur ma becanne).


    Une idée? Je sèche...
    Sur mon interface C# j'avais utilisé un thread pour se faire, mais en ASP.net c'est un peu plus compliqué que ça je pense.

    Merci à vous!

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Tu ne peux pas faire ce que tu souhaites

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci de ta réponse mais tu peux développer un peu stp?

    Si ce n'est pas possible et bien c'est un gros manque dans ce framework...

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Euh non, c'est plutôt une limitation du protocole http.

    Ton événement Row_Created a lieu côté serveur, tu ne peux pas en informer le client

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    De ce côté je suis tout à fait d'accord. Cependant, en faisant rafraîchir la partie contenant le Gridview avec ajax, ça devrait passer non?

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Le serveur "flush" la page qd le grid view est entièrement généré, donc non

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Okay pour le GV, mais si durant l'exécution de ma méthode je voulais afficher l'heure avec un DateTime.Now.ToString();

    Le problème est le même dans mon cas, mais je ne comprend pas pourquoi ça ne se rafraichit pas...

  8. #8
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Une solution pourrait etre de différer le maximum de traitement de la methode lourde. Elle fait quoi cette methode (en particulier ce qui prend du temps) ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci de ta réponse.

    Cette requête fait entre 20 et 500 requêtes SNMP, en traitant les résultats (manipulation de string, ...).
    Après chaque étape, je garnit mon DataTable.

    Réduire la lourdeur de cette méthode ne va pas être vivable, je pense. Mais je suis très loin d'avoir une logique exempte de tout défaut!

  10. #10
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    A mon avis, la question à te poser c'est "est ce que l'utilisateur a besoin que la methode soit completement executée avant que la page soit affichée?".

    Par exemple, si la methode aboutit par l'envoi d'un sms et que dans la page, tu souhaites afficher le resultat de l'envoi, alors il faut attendre. En revanche, si la page demande par exemple la copie d'un fichier volumineux mais que le resultat n'a pas à etre affiché, alors ca peut etre fait en parallele.

    Dans tous les cas, on pourrait imaginer un petit bout de javascript qui ferait appel à un webservice qui execute le traitement lourd...

Discussions similaires

  1. [AC-2010] Forme pointillé lors d'un clic sur bouton
    Par sylv20 dans le forum IHM
    Réponses: 4
    Dernier message: 22/03/2013, 08h29
  2. Réponses: 1
    Dernier message: 14/10/2009, 15h40
  3. Ouvrir 4 états lors d'un clic sur un bouton
    Par Seb33300 dans le forum WebDev
    Réponses: 8
    Dernier message: 28/01/2008, 15h53
  4. Réponses: 1
    Dernier message: 28/05/2007, 11h12
  5. charger nouvelle page par clic sur bouton (pas pop-up)
    Par michaelbob dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/09/2005, 16h04

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