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 :

[AJAX] mise à jour d'un UpdatePanel


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut [AJAX] mise à jour d'un UpdatePanel
    Bonjour

    Je suis confronté à un souci de mise à jour d'un UpdatePanel et j'ai beaucoup de mal à comprendre. Peut être qu'il s'agit d'un truc tout bête, jsute devant mes yeux, mais pour l'isntant je sèche et donc j'en appel à votre bienveillance collective.

    Je vous ai placé le code tout entier de ma page en fin de message. J'ai enlevé des lignes qui n'ont pas d'intérêt, genre le remplissage des cellules des tables) histoire de pas trop surcharger, mais le code reste assez long.

    Le principe est simple : dans mon ASCX (vide côté HTML) je place un UpdatePanel dans le INIT. Ensuite j'appelle différente Sub pour remplir différentes Table à metre dans un certains ordre dans l'UpdatePanel.
    Puis, certaines tables contiennent des LinkBouton et je fais des trucs dans la base de données lorsqu'on click dessus.
    A la fin de chaque Sub accroché au LinkBouton par un Addhandler je lance la Sub qui vide les tables et les recharge, et je fais des Up.update() au maxiumum (en disant que je ne peux pas en faire trop).

    Voyons les symptômes :
    - je clique sur un linkB, ça tourne et ça se recharge bien
    - je clique sur un autre linkB ou le même, il ne se passe rien
    - je clique encore, le même ou un autre, ça recharge bien, comme si le précédent n'avait pas eu lieu, du tout.

    Bilan : je comprends pas comment les clicks peuvent marcher une fois sur deux. Et véritablement une fois sur deux car, si je recharge la page, le premier marche toujours et le second jamais, sauf si je recharge la page, ce qui fait que c'est toujours le premier.

    Merci pour votre aide.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
     
    Partial Class Composant_Speed_Circuit
    	Inherits System.Web.UI.UserControl
    	Private up As New UpdatePanel
     
    	Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    		'code d'initialisation de la liste des circuits
    		With up
    			.ID = "upWindow"
    			.UpdateMode = UpdatePanelUpdateMode.Conditional
    			.RenderMode = UpdatePanelRenderMode.Inline
    			.ChildrenAsTriggers = True
    		End With
     
    		Dim lblTitre As New Label
    		With lblTitre
    			.Text = "Accès aux circuits"
    		End With
    		With up.ContentTemplateContainer.Controls
    			.Clear()
    			.Add(lblTitre)
    			.Add(New LiteralControl("<br />"))
    		End With
     
    		AffichePositionActuelle()
    		AfficheEtape()
    		AfficheDestinationPossible()
    		Controls.Add(up)
    		up.Update()
    	End Sub
     
    	Sub RemiseAJour()
    		up.ContentTemplateContainer.Controls.Remove(up.ContentTemplateContainer.FindControl("lblPositionActuelle"))
    		up.ContentTemplateContainer.Controls.Remove(up.ContentTemplateContainer.FindControl("tblDestination"))
    		up.ContentTemplateContainer.Controls.Remove(up.ContentTemplateContainer.FindControl("tblEtape"))
    		AffichePositionActuelle()
    		AfficheEtape()
    		AfficheDestinationPossible()
    		up.Update()
     
    	End Sub
     
    	Sub AffichePositionActuelle()
    		Dim lblPositionActuelle As New Label
    		lblPositionActuelle.Text = New DManager("DataDev").RetournerScalaire("EXEC SPEED_Voyage_PositionActuelle '" & GetUserGUID().ToString & "'")
    		lblPositionActuelle.ID = "lblPositionActuelle"
    		up.ContentTemplateContainer.Controls.Add(lblPositionActuelle)
    		up.Update()
    	End Sub
     
    	Sub AfficheDestinationPossible()
    		Dim tblDestination As New Table
     
    		For Each dr As DataRow In New DManager("DataDev").RetournerTable("EXEC SPEED_Voyage_ListeVille '" & GetUserGUID().ToString & "'").Rows
    			Dim rDestiantion As New TableRow
    			Dim cDestination, cDistance, cDuree, cBouton As New TableCell
    			Dim lblDestination, lblDistance, lblDuree As New Label
    			Dim lbVoyage As New LinkButton
    			lblDestination.Text = dr.Item("VilleF")
    			lblDistance.Text = "Distance : " & dr.Item("Distance") & " Km"
    			lblDuree.Text = "Durée du voyage : " & dr.Item("Duree")
    			With lbVoyage
    				AddHandler lbVoyage.Click, AddressOf PrendreRoute
    				.Text = "Prendre la route"
    				.CommandArgument = dr.Item("VilleF")
    			End With
     
    			cDestination.Controls.Add(lblDestination)
    			cDistance.Controls.Add(lblDistance)
    			cDuree.Controls.Add(lblDuree)
    			cBouton.Controls.Add(lbVoyage)
    			With rDestiantion.Cells
    				.Add(cDestination)
    				.Add(cDistance)
    				.Add(cDuree)
    				.Add(cBouton)
    			End With
    			tblDestination.Rows.Add(rDestiantion)
    		Next
     
     
    		up.ContentTemplateContainer.Controls.Add(tblDestination)
    		up.Update()
    	End Sub
     
    	Sub AfficheEtape()
    		Dim tblDestination As New Table
     
    		For Each dr As DataRow In New DManager("DataDev").RetournerTable("EXEC SPEED_Voyage_Etape '" & GetUserGUID().ToString & "'").Rows
    			Dim rEtape As New TableRow
    			Dim cVilleD, cVilleA, cHeureD, cHeureA, cBouton As New TableCell
    			Dim lblVilleD, lblVilleA, lblHeureD, lblHeureA As New Label
    			Dim lbEtape As New LinkButton
    			With lbEtape
    				AddHandler lbEtape.Click, AddressOf AnnulerEtape
    				.Text = "Annuler l'étape"
    				.CommandArgument = dr.Item("IDHistoVoyage")
    			End With
     
    			With rEtape.Cells
    				.Add(cVilleD)
    				.Add(cVilleA)
    				.Add(cHeureD)
    				.Add(cHeureA)
    				.Add(cBouton)
    			End With
    			tblDestination.Rows.Add(rEtape)
    		Next
     
     
    		up.ContentTemplateContainer.Controls.Add(tblDestination)
    		up.Update()
    	End Sub
     
    	Sub PrendreRoute(ByVal sender As Object, ByVal e As System.EventArgs)
    		Dim lb As LinkButton = sender
    		Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC SPEED_Voyage_PrendreRoute '" & GetUserGUID().ToString & "','" & lb.CommandArgument & "'")
    		RemiseAJour()
    		up.Update()
    	End Sub
     
    	Sub AnnulerEtape(ByVal sender As Object, ByVal e As System.EventArgs)
    		Dim lb As LinkButton = sender
    		Dim dt As DataTable = New DManager("DataDev").RetournerTable("EXEC SPEED_Voyage_AnnuleEtape '" & GetUserGUID().ToString & "', " & lb.CommandArgument)
    		RemiseAJour()
    		up.Update()
    	End Sub
    End Class

  2. #2
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Je suis un peu obsessionnel, mais je n'aime pas du tout le Init et je ferais le chargement de l'UP sur le load, mais cela n'engage que moi.

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Par acquis de conscience j'ai fait ta manip, aprce que je me doutait bien que cela n'allait pas changer grand chose.

    Mais non, Load ou Init, même combat, toujours un click sur deux. C'est vraiment bizarre comme comportement.

    Une autre idée, quelqu'un ?

  4. #4
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Pre_render ???

    Désolé, je sèche. Il est clair que cela provient d'un problème de rechargement. Quand tu cliques pour la seconde fois sur un contrôle (LB), tu ne passes pas dans ton handler c'est bien ça ?

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    ya du changement : avec le PreRender, il fait plus rien ! ! !

    Et oui, c'est l'impression que ça donne : il passe pas dans le Handler. J'ai mis un tracker de log pour vérifier et visiblement il n'y passe pas du tout.

    Donc pour l'instant on que le PreRender ne fait rien, le Init et le Laod, la moitié. Peut être qu'il faut que je trouve un truc plus tard.

    N'oublie pas non plus qu'il s'agit d'un ASCX, donc je n'ai pas tous les évènement d'une page.

  6. #6
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Par défaut
    Je t'avoue que je galère pas mal à chaque fois que tu parles d'ASCX parce que je n'y ai jamais touché.

    Là, je suis bloqué!

    (j'ai tenté de répondre à ta question dans le fofo sqlserver, si ca te tente )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Rico] AJAX / Mise à jour de div
    Par bastiencb dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 24/06/2008, 18h09
  2. [AJAX] Mise à jour selon le temps d'un UpdatePanel
    Par zooffy dans le forum ASP.NET
    Réponses: 22
    Dernier message: 29/05/2008, 11h46
  3. [AJAX] mise à jour des données ajax
    Par vacknov dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 18/06/2007, 09h43
  4. [AJAX] Mise a jour de deux div
    Par Phenomenium dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/09/2006, 18h38
  5. [AJAX] Case à cocher-->mise à jour select
    Par senacle dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/06/2006, 16h11

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