Bonjour,
Y a t il un moyen pour connaitre qui est le sender dans le onInit, car j'ai besoin de faire des traitements differents en fonction du sender.
Merci
Version imprimable
Bonjour,
Y a t il un moyen pour connaitre qui est le sender dans le onInit, car j'ai besoin de faire des traitements differents en fonction du sender.
Merci
Dans l'évènement Init, c'est le paramètre sender
Dans la méthode OnInit, c'est toujours this...
Avec this on ne peut pas recuprerer le control qui a genere un postback !!!
Lors du oninit tu ne peux pas le savoir car cette information ne sera disponible qu'une fois le viewstate evalué et si cela arrive dans l'evenement juste avant le pageload de ta page.. me souvient plus du nom exacte la..
tu peux essayer Context.Request.Form["__EVENTTARGET"] ou ca Page.Request.Params.Get("__EVENTTARGET") ca permet d'avoir l'ID du control qui a généré le postback
Context.Request.Form["__EVENTTARGET"]me renvoie vide à chaque fois!!!!
Tain, je viens de faire une découverte incroyable: ca s'appelle google.
J'ai tapé les mots asp.net init control postback et je suis tombé sur: http://ryanfarley.com/blog/archive/2005/03/11/1886.aspx.
Et ça m'a pris 15 secondes, énorme ...
Technique alternative utilisable uniquement si tu utilises les extensions ajax dans ton projet:
utiliser le pageRequestManager côté client.
Coller un "debugger;" sous "postBackElement = args.get_postBackElement();" et tu verras que tu récupères bien le contrôle à l'origine de la mise à jour de l'updatepanel.Code:
1
2
3
4
5
6
7
8 var prm = Sys.WebForms.PageRequestManager.getInstance(); prm.add_initializeRequest(InitializeRequest); var postBackElement; function InitializeRequest(sender, args) { postBackElement = args.get_postBackElement(); }
Un lien vers la MSDN
Au passage, est ce que certains d'entre vous utilisent cette technique ? Qu'en pensez-vous ?
Vous pouvez répéter la question ?
Comment ça "en prod" ?
Ah! c'était pour le "debugger;" ?
C'est juste pour coller un point d'arrêt dans le js à des fins de test.
Sinon, pas d'avis sur cette technique ?
Ca dépend évidemment quel est le but de la manoeuvre.
On peut toujours utiliser un hiddenfield et lui affecter l'id du postbackElement même si ce n'est pas ultra classe.
Pour ma part j'utilise cela essentiellement dans des traitements effectués côté client et n'ai donc pas besoin de récupérer quoi que ce soit dans le code behind.
Request.Params.Get("__EVENTTARGET") et Request.Params.Get("__EVENTARGUMENT"); me retourne toujours vide.
Je ne peux utiliser la solution ajax.
J'ai cherché dans google et suis tombé sur les meme pages, j'ai ecris sur ce forum car ca ne marche pas et essaye de trouver une solution !!!!!!!
Bah sinon une méthode peut etre pas tres propre mais qui peut marcher : tu inscris du coté client en javascript dans un champ hidden quel controle realise le postback avant de soumettre ton postback et ensuite tu recupéres cette valeur via ton querystring ou form.
Mais en meme temps en disant cela, je me dis que cette information tu devrais de toutes facons l'avoir avec Request.Params.Get("__EVENTTARGET") et Request.Params.Get("__EVENTARGUMENT")....
Bon je seche,
PS: Prends pas la mouche... Lutecefaclo a toujours été un vieil ours mal léché! ;)
En faite mon bouton en question est dans un updatePanel, est ce pour cela que je recupere une string vide ?
Topolino, si ton contrôle est dans un UpdatePanel, alors tu peux utiliser la solution ajax proposée.
Tu colles le code que j'ai indiqué dans l'aspx dans des balises <script></script> et tu trouves une solution pour récupérer le contenu de la variable postbackElement.