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 :

ASP.NET Ajax - AsyncPostBackTrigger qui ne fonctionne pas deux fois de suite?


Sujet :

ASP.NET

  1. #1
    Membre �clair� Avatar de MicaelFelix
    Profil pro
    �tudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par d�faut ASP.NET Ajax - AsyncPostBackTrigger qui ne fonctionne pas deux fois de suite?
    Bonjour � tous,

    Je ne sais pas si beaucoup d'entre vous utilisent Ajax sur ASP.NET, moi j'ai un probl�me "de base" (qui ne devrait pas �tre si compliqu�) mais je n'arrive pas � trouver de solution malgr� mes recherches sur internet.

    Ci dessous un exemple tr�s simple que vous pouvez copier dans un projet de test pour reproduire le probl�me.

    J'ai :
    - Un label (en dehors de l'UpdatePanel).
    - Un UpdatePanel avec un label � l'int�rieur.
    - Un bouton (en dehors de l'UpdatePanel).

    Dans le code juste derri�re j'ai cr�� un AsyncPostBackTrigger et je l'ai li� sur l'�v�nement du clic du bouton.

    Le bouton sert simplement � ajouter la date actuelle sur le label qui est dans l'updatepanel.
    � chaque postback complet, le label � l'ext�rieur de l'updatepanel est mis � jour avec la date actuelle.

    Mon probl�me est le suivant:

    Le premier clic sur le bouton fait un rendu partiel (c'est ce que je veux, c'est le but de l'utilisation d'ajax), mais un autre clic fait un postback COMPLET (reload de toute la page!) � la place de le faire partiellement.

    Contenu de Page1.aspx :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <div>
            <asp:Label ID="Label_FullPostBack" runat="server" Text="Label"></asp:Label>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Label ID="Label_PartialPostBack" runat="server" Text="Label"></asp:Label>
                </ContentTemplate>
            </asp:UpdatePanel>
            <asp:Button ID="Button1" runat="server" Text="Test" />
        </div>
    CodeBehind de Page1.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
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If IsPostBack() Then
                Label_FullPostBack.Text = Date.Now()
            End If
            Dim x As New AsyncPostBackTrigger()
            x.ControlID = Button1.UniqueID
            x.EventName = "Click"
            UpdatePanel1.Triggers.Add(x)
        End Sub
     
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            System.Threading.Thread.Sleep(1000) 'To see changes
            Label_PartialPostBack.Text = Date.Now()
        End Sub
    Comment faire pour �viter que �a reload tout? J'aimerai avoir une requ�te ajax � chaque clic, et pas une fois sur deux

    Merci d'avance pour votre aide pr�cieuse.

    Mica�l

  2. #2
    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 juste un probl�me d'ordre des �v�nements du cycle de la page.
    Tu cr�es l'AsyncPostBackTrigger trop tard.

    Soit tu fais �a en code behind (C# ici)

    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
     
    protected void Page_Init(object sender, EventArgs e)
            {
                var x = new AsyncPostBackTrigger();
                x.ControlID = Button1.ID;
                UpdatePanel1.Triggers.Add(x);
            }
     
            protected void Page_Load(object sender, EventArgs e)
            {
                if (IsPostBack)
                    Label_FullPostBack.Text = DateTime.Now.ToString();
            }
     
            protected void Button1_Click(object sender, EventArgs e)
            {
                System.Threading.Thread.Sleep(1000);
                Label_PartialPostBack.Text = DateTime.Now.ToString();
            }
    Soit tu cr�es l'AsyncPostBackTrigger dans le code ASPX

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <asp:Label ID="Label_FullPostBack" runat="server" Text="Label"></asp:Label>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Label ID="Label_PartialPostBack" runat="server" Text="Label"></asp:Label>
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" />
                </Triggers>
            </asp:UpdatePanel>
            <asp:Button ID="Button1" runat="server" Text="Test" OnClick="Button1_Click" />

  3. #3
    Membre �clair� Avatar de MicaelFelix
    Profil pro
    �tudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par d�faut
    Un grand merci pour ta r�ponse

    Ok j'ai essay� �a :

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init

    Dim x As New AsyncPostBackTrigger()
    x.ControlID = Button1.UniqueID
    x.EventName = "Click"
    UpdatePanel1.Triggers.Add(x)
    End Sub

    Et �a fonctionne parfaitement maintenant (au moins sur cet exemple)!
    Donc j'aurais juste � d�placer tous mes codes dans le Me.Init � la place du Me.Load on dirait... je vais voir si �a fonctionne

    Question b�te :
    Pourquoi cela fonctionnait une fois en Ajax et pour le reste pas une seule fois?

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [ASP] Validation de formulaire qui ne fonctionne pas
    Par lamouche42 dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 17/04/2013, 12h24
  2. R�ponses: 5
    Dernier message: 12/06/2012, 03h24
  3. AMFPHP qui ne fonctionne pas une fois mon swf en ligne
    Par Grimdol dans le forum ActionScript 3
    R�ponses: 5
    Dernier message: 24/04/2009, 12h20
  4. R�ponses: 5
    Dernier message: 14/02/2008, 21h20
  5. [asp.net C#] Event onclick ne fonctionne pas
    Par vin100H dans le forum ASP.NET
    R�ponses: 3
    Dernier message: 10/08/2007, 10h35

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