piloulr
Messages postés14Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 juillet 2006
-
21 mars 2006 à 13:29
piloulr
Messages postés14Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 juillet 2006
-
22 mars 2006 à 13:46
Bonjour à tous,
Voilà je me gratte la tête car ça ne vient pas...
Je programme en AspNet 2, VBNet
J'ai une page aspx qui créait dynamiquement les contrôles qui la compose.
Lors du postback je voudrais savoir quel est l'id du contrôle qui l'a déclenché.
Ceci afin d'éviter de recréer tous les contrôles de ma page, uniquement le bouton qui généré le postback afin que l'évenement associé par le addhandler soit activé.
PS : j'ai essayé le
Dim str
As
String = Request.Form(
"__EVENTTARGET").ToString
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 21 mars 2006 à 13:58
Bonjour,
c'est bizarre que __EventTarget soit nul :s
je viens de tester et tout fonctionne bien pour moi :
Partial Class admin_test_Default
Inherits System.Web.UI.Page
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
If Not Page.IsPostBack Then
Dim btn As New Button()
AddHandler btn.Click, AddressOf btn_click
btn.ID = "toto"
btn.Text = "coucou :)"
form1.Controls.Add(btn)
End If
If Request.Form("__EVENTTARGET") = "toto" Then
btn_click(Nothing, EventArgs.Empty)
End If
End Sub
Protected Sub btn_click(ByVal sender As Object, ByVal e As System.EventArgs)
Response.Write("je suis clické")
End Sub
End Class
piloulr
Messages postés14Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 juillet 2006 21 mars 2006 à 14:58
Protected
Sub Page_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
Me.Load
if
Not Page.IsPostBack
Then
PRoutines =
New Web.AppCode.PageRoutines
'Création des contrôles
PRoutines.CreateControls(BodyHolder)
PRoutines.UpdateControls(BodyHolder)
Dim toto
As
New Button
toto.ID =
"eee"
toto.Text =
"ererer"
BodyHolder.Controls.Add(toto)
Else
Dim str
As
String = Request.Form(
"__EVENTTARGET").ToString
'Le PostBack :
'1) Il est déclencher par une action (bouton, imagebouton,...), dans ce cas il faut impérativement recréer le controle
' pour pouvoir déclencher l'événement
'2) Autres, il faut recréer tous les controles
PRoutines =
New Web.AppCode.PageRoutines
'Affectation des valeurs aux controles
'PRoutines.CreateControls(BodyHolder)
'PRoutines.UpdateControls(BodyHolder)
End
If
If Request.Form(
"__EVENTTARGET") =
"toto"
Then :::::::::::: ICI le résultat vaut ""
' btn_click(Nothing, EventArgs.Empty)
End
If
End
Sub
En mettant simplement l'ajout du bouton TOTO, le résultat est incorrect !!!!!
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 21 mars 2006 à 15:19
Si tu supprimes New Web.AppCode.PageRoutines tu as le bon résultat ? car tu retombes sur le meme code que moi .. mis à part que je suis dans le page_init qui est l'evenement conseillé pour rajotué des controles dynamiquement :)
piloulr
Messages postés14Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 juillet 2006 21 mars 2006 à 15:30
Quand je suis en debug et que je pointe ma sourie sur la le Request.Form(
"__EVENTTARGET"),
Il y a un champ qui se nomme AllKeys composée de 5 valeurs dont une vaut : clt00$ContentPlaceHolder$eee qui est l'id de mon bouton...
Mais le Request me rend tjrs "" (mais en passant par le Handle Me.init)
piloulr
Messages postés14Date d'inscriptionsamedi 4 octobre 2003StatutMembreDernière intervention28 juillet 2006 21 mars 2006 à 16:05
Je viens de trouver ce message sur un forum : qu'en penses-tu ?
it works the same way in c#. but Request.Form["__EVENTTARGET"] is only used
with controls that use javascript to postback, not with asp:button or
asp:imagebutton controls. you check for their postback by checking
Request.Form for an entry with their name.
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 21 mars 2006 à 16:07
je voulais dire request.form("__truc") est un string ...
et si tu met la trace =true dans la directive de page tu verras les informations de debugage sinon utilises fiddler pour voir le contenu de l'en-tete de ta requete, on va bien finir par trouver ce qui se passe :)
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 21 mars 2006 à 16:48
je comprens plus rien :(
j'ai retesté mon code et ca marche plus :(
par contre si je met un linkbutton ca marche, et effectivement avec des boutons le principe est différent par contre je comprend pas pourquoi l'id est aprés le viewstate
une des solutions serait donc de rajouter une fonction javascript sur le onclick du bouton qui va setter l'__eventtarget pour qu'il est le bon id :s
Je regarderais ce soir à tete "reposé" car la je suis un peu tout embrouillé :)