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