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