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 :
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 <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>
Comment faire pour éviter que ça reload tout? J'aimerai avoir une requête ajax à chaque clic, et pas une fois sur deux
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
Merci d'avance pour votre aide précieuse.
Micaël
Partager