Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb de PostBack

9 réponses
Avatar
Emilie
Bonjour

Sur une page Web je voudrais récupérer l'ID du controle qui est à l'origine
du PostBack,
Avec le code ci-dessous j'ai le message d'erreur : la référence d'objet
n'est pas définie à une instance d'un objet sur la ligne : Dim LeControle As
String

Dans mon page_load :

Dim LeControle As String = Request.Form("_EVENTTARGET").ToString



Mon bouton est créé dynamiquement :

ImbG.CommandName = "Gamme"

AddHandler ImbG.Command, AddressOf ImageButton_Command



Public Sub ImageButton_Command(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.CommandEventArgs)

If IsPostBack Then

Dim ImbG As ImageButton = DirectCast(sender, ImageButton)

Session("IDprod") = Mid(ImbG.ID, 5)

End If

End Sub


Pouvez-vous me dire ce qui est mal codé

Merci pour vos réponses
Emilie

9 réponses

Avatar
Gilbert Tordeur
Émilie,

Ta réponse ne se trouverait-elle pas trois messages plus bas, dans «ASP.NET
: Sur quel bouton a cliqué l'utilisateur ?» ?

Gilbert
Avatar
Emilie
Bonjour Gilles

Je n'ai pas ce message?
Peux-tu me dire où

Emilie
"Gilbert Tordeur" a écrit dans le message de
news:
Émilie,

Ta réponse ne se trouverait-elle pas trois messages plus bas, dans
«ASP.NET : Sur quel bouton a cliqué l'utilisateur ?» ?

Gilbert



Avatar
Gilbert Tordeur
Voici,
Gilbert

================
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton a
cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert

=================
Bonjour,

Request.Form("__EVENTTARGET") mais généralement on réagit plutôt dans la
procédure évènementielle correspondant au bouton cliqué...

Eventuellement voir :

http://www.generation-nt.com/reponses/postback-entraide-2290911.html#reponse

--
Patrice



"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton a
cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert




====================
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me renvoie
un string vide ou nul. J'ai vérifié en activant la trace, et le nom
__EVENTTARGET n'apparaît pas dans la collection Form. Seuls apparaissent
__VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert

====================
Au temps pour moi, cela dépend du control...

De base, lorsqu'on clique sur un "vrai" bouton, le navigateur renvoie une
valeur avec comme nom l'attribut name du bouton et avec comme valeur
l'attribut value. Tu vois qq chose dans la collection Form ?

Qq chose comme :

Request.form(MyButton.ClientID)<>"" devrait marcher (vérifier également avec
"view source" dans le navigateur que l'attribut name du bouton a bien la
même valeur que son attribut "id").

Si ce n'est toujours pas ok, indique le type de bouton utilisé et je ferais
un test...

--
Patrice


"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me renvoie
un string vide ou nul. J'ai vérifié en activant la trace, et le nom
__EVENTTARGET n'apparaît pas dans la collection Form. Seuls apparaissent
__VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert




=================
Patrice.

Un problème réglé. Pour information, ce n'est pas
Request.Form(MyButton.ClientID)<>"", mais
Request.Form(MyButton.UniqueID)<>""

Merci,
Gilbert
Avatar
Emilie
Merci Gilles

Avec Dim LeControle As String = Request.Form("ImbG.ClientID").ToString
j'ai toujours le message : la référence d'objet
n'est pas définie à une instance d'un objet

Emilie

"Gilbert Tordeur" a écrit dans le message de
news:
Voici,
Gilbert

================ >
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton a
cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert

================= >
Bonjour,

Request.Form("__EVENTTARGET") mais généralement on réagit plutôt dans la
procédure évènementielle correspondant au bouton cliqué...

Eventuellement voir :

http://www.generation-nt.com/reponses/postback-entraide-2290911.html#reponse

--
Patrice



"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton a
cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert




==================== >
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me renvoie
un string vide ou nul. J'ai vérifié en activant la trace, et le nom
__EVENTTARGET n'apparaît pas dans la collection Form. Seuls apparaissent
__VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert

==================== >
Au temps pour moi, cela dépend du control...

De base, lorsqu'on clique sur un "vrai" bouton, le navigateur renvoie une
valeur avec comme nom l'attribut name du bouton et avec comme valeur
l'attribut value. Tu vois qq chose dans la collection Form ?

Qq chose comme :

Request.form(MyButton.ClientID)<>"" devrait marcher (vérifier également
avec
"view source" dans le navigateur que l'attribut name du bouton a bien la
même valeur que son attribut "id").

Si ce n'est toujours pas ok, indique le type de bouton utilisé et je
ferais
un test...

--
Patrice


"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me
renvoie un string vide ou nul. J'ai vérifié en activant la trace, et le
nom __EVENTTARGET n'apparaît pas dans la collection Form. Seuls
apparaissent __VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma
page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert




================= >
Patrice.

Un problème réglé. Pour information, ce n'est pas
Request.Form(MyButton.ClientID)<>"", mais
Request.Form(MyButton.UniqueID)<>""

Merci,
Gilbert



Avatar
Gilbert Tordeur
Avant d'appliquer la méthode ToString, il faut que tu testes
Request.Form("ImbG.ClientID") par rapport à Nothing. Si
Request.Form("ImbG.ClientID") = Nothing, alors ce contrôle n'est pas le
bouton sur lequel on a cliqué. Et tu essayes un autre...

Gilbert

"Emilie" a écrit dans le message de news:
4a5e070e$0$12630$
Merci Gilles

Avec Dim LeControle As String = Request.Form("ImbG.ClientID").ToString
j'ai toujours le message : la référence d'objet
n'est pas définie à une instance d'un objet

Emilie

"Gilbert Tordeur" a écrit dans le message de
news:
Voici,
Gilbert

================ >>
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton a
cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert

================= >>
Bonjour,

Request.Form("__EVENTTARGET") mais généralement on réagit plutôt dans la
procédure évènementielle correspondant au bouton cliqué...

Eventuellement voir :

http://www.generation-nt.com/reponses/postback-entraide-2290911.html#reponse

--
Patrice



"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton
a cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert




==================== >>
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me
renvoie
un string vide ou nul. J'ai vérifié en activant la trace, et le nom
__EVENTTARGET n'apparaît pas dans la collection Form. Seuls apparaissent
__VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert

==================== >>
Au temps pour moi, cela dépend du control...

De base, lorsqu'on clique sur un "vrai" bouton, le navigateur renvoie une
valeur avec comme nom l'attribut name du bouton et avec comme valeur
l'attribut value. Tu vois qq chose dans la collection Form ?

Qq chose comme :

Request.form(MyButton.ClientID)<>"" devrait marcher (vérifier également
avec
"view source" dans le navigateur que l'attribut name du bouton a bien la
même valeur que son attribut "id").

Si ce n'est toujours pas ok, indique le type de bouton utilisé et je
ferais
un test...

--
Patrice


"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me
renvoie un string vide ou nul. J'ai vérifié en activant la trace, et le
nom __EVENTTARGET n'apparaît pas dans la collection Form. Seuls
apparaissent __VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma
page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert




================= >>
Patrice.

Un problème réglé. Pour information, ce n'est pas
Request.Form(MyButton.ClientID)<>"", mais
Request.Form(MyButton.UniqueID)<>""

Merci,
Gilbert







Avatar
Emilie
Bonjour Gilles

Quand je teste cela ne trouve pas le controle
avec le pas à pas j'ai le clienID="ctl100_CphContenu_ImbG1"

Les ImageButton sont ImbG1 à ImbGx

Mon Request.Form est mal codé ?

Emilie
"Gilbert Tordeur" a écrit dans le message de
news: %
Avant d'appliquer la méthode ToString, il faut que tu testes
Request.Form("ImbG.ClientID") par rapport à Nothing. Si
Request.Form("ImbG.ClientID") = Nothing, alors ce contrôle n'est pas le
bouton sur lequel on a cliqué. Et tu essayes un autre...

Gilbert

"Emilie" a écrit dans le message de news:
4a5e070e$0$12630$
Merci Gilles

Avec Dim LeControle As String = Request.Form("ImbG.ClientID").ToString
j'ai toujours le message : la référence d'objet
n'est pas définie à une instance d'un objet

Emilie

"Gilbert Tordeur" a écrit dans le message de
news:
Voici,
Gilbert

================ >>>
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton
a
cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert

================= >>>
Bonjour,

Request.Form("__EVENTTARGET") mais généralement on réagit plutôt dans la
procédure évènementielle correspondant au bouton cliqué...

Eventuellement voir :

http://www.generation-nt.com/reponses/postback-entraide-2290911.html#reponse

--
Patrice



"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Bonjour.

En VB2008 ASP.NET : je voudrais savoir, dans Page.Load, sur quel bouton
a cliqué l'utilisateur pour envoyer la page. Où puis-je trouver cette
information ?

Merci d'avance,
Gilbert




==================== >>>
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me
renvoie
un string vide ou nul. J'ai vérifié en activant la trace, et le nom
__EVENTTARGET n'apparaît pas dans la collection Form. Seuls apparaissent
__VIEWSTATE et __EVENTVALIDATION en plus de contrôles de ma page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert

==================== >>>
Au temps pour moi, cela dépend du control...

De base, lorsqu'on clique sur un "vrai" bouton, le navigateur renvoie
une
valeur avec comme nom l'attribut name du bouton et avec comme valeur
l'attribut value. Tu vois qq chose dans la collection Form ?

Qq chose comme :

Request.form(MyButton.ClientID)<>"" devrait marcher (vérifier également
avec
"view source" dans le navigateur que l'attribut name du bouton a bien la
même valeur que son attribut "id").

Si ce n'est toujours pas ok, indique le type de bouton utilisé et je
ferais
un test...

--
Patrice


"Gilbert Tordeur" a écrit dans le message de
groupe de discussion :
Patrice,

Merci pour ta réponse. Cependant, Request.Form("__EVENTTARGET") me
renvoie un string vide ou nul. J'ai vérifié en activant la trace, et le
nom __EVENTTARGET n'apparaît pas dans la collection Form. Seuls
apparaissent __VIEWSTATE et __EVENTVALIDATION en plus de contrôles de
ma page.

Pour te rassurer, je traite bien l'événement dans la routine _Click du
bouton. Mais j'ai ici un cas très particulier où j'aimerais avoir
l'information dans Page.Load, donc avant le traitement normal.

Gilbert




================= >>>
Patrice.

Un problème réglé. Pour information, ce n'est pas
Request.Form(MyButton.ClientID)<>"", mais
Request.Form(MyButton.UniqueID)<>""

Merci,
Gilbert











Avatar
Gilbert Tordeur
ta Request.Form est normale. Les noms des contrôles qui reviennent sont
toujours préfixés. C'est pourquoi il faut utiliser le UniqueID.
Gilbert

"Emilie" a écrit dans le message de news:
4a5f2416$0$12639$
Bonjour Gilles

Quand je teste cela ne trouve pas le controle
avec le pas à pas j'ai le clienID="ctl100_CphContenu_ImbG1"

Les ImageButton sont ImbG1 à ImbGx

Mon Request.Form est mal codé ?

Emilie


Avatar
Emilie
Donc comme ce code :

Dim control As Control = Nothing

Dim CtrlName As String = Request.Form("ImbG.UniqueID")

If Not String.IsNullOrEmpty(CtrlName) Then

control = Me.FindControl(CtrlName)

Dim LeControle As String = control.ID

End If


Emilie

"Gilbert Tordeur" a écrit dans le message de
news:
ta Request.Form est normale. Les noms des contrôles qui reviennent sont
toujours préfixés. C'est pourquoi il faut utiliser le UniqueID.
Gilbert

"Emilie" a écrit dans le message de news:
4a5f2416$0$12639$
Bonjour Gilles

Quand je teste cela ne trouve pas le controle
avec le pas à pas j'ai le clienID="ctl100_CphContenu_ImbG1"

Les ImageButton sont ImbG1 à ImbGx

Mon Request.Form est mal codé ?

Emilie






Avatar
Emilie
Bonjour Gilles

J'ai modifié mon code comme suit :

Dim control As Control = Nothing

Dim CtrlName As String = Request.Form("ImbG.UniqueID")

If Not String.IsNullOrEmpty(CtrlName) Then

control = Me.FindControl(CtrlName)

Dim LeControle As String = control.ID

Else

For Each ctl As String In Me.Request.Form

Dim c As Control = Me.FindControl(ctl)

If TypeOf c Is System.Web.UI.WebControls.ImageButton Then

Dim LeControle As String = c.ID

End If

Next

End If

Quand je teste au pas à pas, dans la boucle for next le ImbG n'est pas
trouvé.
Mon probléme c'est que j'ai trois séries de bouton créés dynamiquement :
ImbG, ImbAJ et ImbFN

Quand je clic sur ImbAJ ou ImbFN le postback supprime les ImbAJ ou les ImbFN

Emilie



"Gilbert Tordeur" a écrit dans le message de
news:
ta Request.Form est normale. Les noms des contrôles qui reviennent sont
toujours préfixés. C'est pourquoi il faut utiliser le UniqueID.
Gilbert

"Emilie" a écrit dans le message de news:
4a5f2416$0$12639$
Bonjour Gilles

Quand je teste cela ne trouve pas le controle
avec le pas à pas j'ai le clienID="ctl100_CphContenu_ImbG1"

Les ImageButton sont ImbG1 à ImbGx

Mon Request.Form est mal codé ?

Emilie