OVH Cloud OVH Cloud

Lecture valeur variable javascript par aspnet

8 réponses
Avatar
Younes
Bonjour,
J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée par un
script js, depuis mon code behind de ma page aspnet.
J'utilise un hiddenInput mais ça marche pas :(

Qlq'1 peut il m'aider
Merci

Younes

8 réponses

Avatar
Karl Seguin [MVP]
Si tu peus montrer du code, sa pourait aider...

Si t'assigne ta variable on script js, tu devrais être capable d'utiliser
Request.Form["id"]; dans ton code behind...

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
Bonjour,
J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée par un
script js, depuis mon code behind de ma page aspnet.
J'utilise un hiddenInput mais ça marche pas :(

Qlq'1 peut il m'aider
Merci

Younes


Avatar
Younes
Salut Karl,

Le contexte de ma question est le suivant :
Je veux mettre en place un UserControl qui constituera une boite de siaise,
dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place une page
aspx qui contient une zone de texte et deux bouttons, le UserControl affiche
cette page à l'aide du script suivant :

string strScript = "";
strScript += "<Script Language = "JavaScript">n";
strScript += "n";
strScript += " var retval='';n";
strScript += " retval = showModalDialog('/" +
ConfigurationManager.AppSettings["NomProjet"].ToString() +
"/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
strScript += " if ( retval=='MB_Annuler' )n";
strScript += " {n";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Annuler") + ";n";
strScript += " }n";
strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
strScript += " {n";
strScript += " form1.Hidden1.value= retval;alert(form1.Hidden1.value);";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";
strScript += " }n";

strScript += "n";
strScript += "</Script>n";

Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);

Comme vous le remarquer, l'appel se fait à l'aide de "showModalDialog" avec
une valeur de retour, c'est cette valeur de retour que je veux recuperer au
niveau de la page qui inclu le UserControl.

Pour schématiser : il y'a ma page qui contient le UserCotrol, le userControl
fait apppel à une autre page qui constitue la structure de la boite de saisie
d'où je veux recuperer la valeur saisie.

Merci pour votre aide.
Younes



"Karl Seguin [MVP]" a écrit :

Si tu peus montrer du code, sa pourait aider...

Si t'assigne ta variable on script js, tu devrais être capable d'utiliser
Request.Form["id"]; dans ton code behind...

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Bonjour,
> J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée par un
> script js, depuis mon code behind de ma page aspnet.
> J'utilise un hiddenInput mais ça marche pas :(
>
> Qlq'1 peut il m'aider
> Merci
>
> Younes





Avatar
Karl Seguin [MVP]
Younes:
Si t'utilises GetPostBackEventReference, c'est très facile, tu n'as pas
besoin de hiddenInput.

Dans to UserControl, tu peus simplement fair:

if (Page.IsPostBack && Request.Form["__EVENTTARGET"] == this.UniqueID)
{
string valeur = Request.Form["__EVENTARGUMENT"];
}

La première valeur que to passe à GetPostBackEventReference et inseré dans
__EVENTTARGET et la deuxeme dans __EVENTARGUMENTS. En réality c'est des
champs hiddenInput.

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
Salut Karl,

Le contexte de ma question est le suivant :
Je veux mettre en place un UserControl qui constituera une boite de
siaise,
dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place une
page
aspx qui contient une zone de texte et deux bouttons, le UserControl
affiche
cette page à l'aide du script suivant :

string strScript = "";
strScript += "<Script Language = "JavaScript">n";
strScript += "n";
strScript += " var retval='';n";
strScript += " retval = showModalDialog('/" +
ConfigurationManager.AppSettings["NomProjet"].ToString() +
"/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
strScript += " if ( retval=='MB_Annuler' )n";
strScript += " {n";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Annuler") + ";n";
strScript += " }n";
strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
strScript += " {n";
strScript += " form1.Hidden1.value= retval;alert(form1.Hidden1.value);";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";
strScript += " }n";

strScript += "n";
strScript += "</Script>n";

Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);

Comme vous le remarquer, l'appel se fait à l'aide de "showModalDialog"
avec
une valeur de retour, c'est cette valeur de retour que je veux recuperer
au
niveau de la page qui inclu le UserControl.

Pour schématiser : il y'a ma page qui contient le UserCotrol, le
userControl
fait apppel à une autre page qui constitue la structure de la boite de
saisie
d'où je veux recuperer la valeur saisie.

Merci pour votre aide.
Younes



"Karl Seguin [MVP]" a écrit :

Si tu peus montrer du code, sa pourait aider...

Si t'assigne ta variable on script js, tu devrais être capable d'utiliser
Request.Form["id"]; dans ton code behind...

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Bonjour,
> J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée par
> un
> script js, depuis mon code behind de ma page aspnet.
> J'utilise un hiddenInput mais ça marche pas :(
>
> Qlq'1 peut il m'aider
> Merci
>
> Younes







Avatar
Younes
Bonjour Karl,
tt d'abord j'aimerai te remercier pour tes reponse et le temps que tu me
reserve pour chacune, thank you :).

Mainteant, je pense k'on s'est pas mis d'accord sur un truc, c'est que moi
je cherche à recuperer la valeur de la variable 'retval' (regarde le script)
et non le string 'MB_Ok' que je passe en param à mon evenement.
Ceci est dit, s'il y'a moyen de faire passer la valeur de la variable
'retval' dans les argument de l'evenement ça sera une bonne solution.

Qu'en pensez vous?

Younes

"Karl Seguin [MVP]" wrote:

Younes:
Si t'utilises GetPostBackEventReference, c'est très facile, tu n'as pas
besoin de hiddenInput.

Dans to UserControl, tu peus simplement fair:

if (Page.IsPostBack && Request.Form["__EVENTTARGET"] == this.UniqueID)
{
string valeur = Request.Form["__EVENTARGUMENT"];
}

La première valeur que to passe à GetPostBackEventReference et inseré dans
__EVENTTARGET et la deuxeme dans __EVENTARGUMENTS. En réality c'est des
champs hiddenInput.

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Salut Karl,
>
> Le contexte de ma question est le suivant :
> Je veux mettre en place un UserControl qui constituera une boite de
> siaise,
> dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place une
> page
> aspx qui contient une zone de texte et deux bouttons, le UserControl
> affiche
> cette page à l'aide du script suivant :
>
> string strScript = "";
> strScript += "<Script Language = "JavaScript">n";
> strScript += "n";
> strScript += " var retval='';n";
> strScript += " retval = showModalDialog('/" +
> ConfigurationManager.AppSettings["NomProjet"].ToString() +
> "/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
> strScript += " if ( retval=='MB_Annuler' )n";
> strScript += " {n";
> strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
> "MB_Annuler") + ";n";
> strScript += " }n";
> strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
> strScript += " {n";
> strScript += " form1.Hidden1.value= retval;alert(form1.Hidden1.value);";
> strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
> "MB_Ok") + ";n";
> strScript += " }n";
>
> strScript += "n";
> strScript += "</Script>n";
>
> Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);
>
> Comme vous le remarquer, l'appel se fait à l'aide de "showModalDialog"
> avec
> une valeur de retour, c'est cette valeur de retour que je veux recuperer
> au
> niveau de la page qui inclu le UserControl.
>
> Pour schématiser : il y'a ma page qui contient le UserCotrol, le
> userControl
> fait apppel à une autre page qui constitue la structure de la boite de
> saisie
> d'où je veux recuperer la valeur saisie.
>
> Merci pour votre aide.
> Younes
>
>
>
> "Karl Seguin [MVP]" a écrit :
>
>> Si tu peus montrer du code, sa pourait aider...
>>
>> Si t'assigne ta variable on script js, tu devrais être capable d'utiliser
>> Request.Form["id"]; dans ton code behind...
>>
>> Karl
>>
>> --
>> http://www.openmymind.net/
>> http://www.fuelindustries.com/
>>
>>
>> "Younes" wrote in message
>> news:
>> > Bonjour,
>> > J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée par
>> > un
>> > script js, depuis mon code behind de ma page aspnet.
>> > J'utilise un hiddenInput mais ça marche pas :(
>> >
>> > Qlq'1 peut il m'aider
>> > Merci
>> >
>> > Younes
>>
>>
>>





Avatar
Karl Seguin [MVP]
Oopps :) je ne sais pas comments j'ai manqué ça...

Ton code original devrais fonctionner...j'ai réussi avec:

if (Page.IsPostBack && Request.Form["__EVENTARGUMENT"] == "MB_Ok")
{
string reval = Request.Form["valeurSaisie"];
}
else
{
Page.ClientScript.RegisterHiddenField("valeurSaisie", "0");
string strScript = "";
strScript += "<Script Language = "JavaScript">n";
//...
strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
strScript += " {n";
strScript += " document.getElementById('valeurSaisie').value = retval;";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";
//...
Page.ClientScript.RegisterStartupScript(this.GetType(), "BoiteSaisie",
strScript);
}


j'assigne retval dans un HiddenInput que je crée avec
Page.ClientScript.RegisterHiddenField...


Karl
--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
Bonjour Karl,
tt d'abord j'aimerai te remercier pour tes reponse et le temps que tu me
reserve pour chacune, thank you :).

Mainteant, je pense k'on s'est pas mis d'accord sur un truc, c'est que moi
je cherche à recuperer la valeur de la variable 'retval' (regarde le
script)
et non le string 'MB_Ok' que je passe en param à mon evenement.
Ceci est dit, s'il y'a moyen de faire passer la valeur de la variable
'retval' dans les argument de l'evenement ça sera une bonne solution.

Qu'en pensez vous?

Younes

"Karl Seguin [MVP]" wrote:

Younes:
Si t'utilises GetPostBackEventReference, c'est très facile, tu n'as pas
besoin de hiddenInput.

Dans to UserControl, tu peus simplement fair:

if (Page.IsPostBack && Request.Form["__EVENTTARGET"] == this.UniqueID)
{
string valeur = Request.Form["__EVENTARGUMENT"];
}

La première valeur que to passe à GetPostBackEventReference et inseré
dans
__EVENTTARGET et la deuxeme dans __EVENTARGUMENTS. En réality c'est des
champs hiddenInput.

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Salut Karl,
>
> Le contexte de ma question est le suivant :
> Je veux mettre en place un UserControl qui constituera une boite de
> siaise,
> dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place une
> page
> aspx qui contient une zone de texte et deux bouttons, le UserControl
> affiche
> cette page à l'aide du script suivant :
>
> string strScript = "";
> strScript += "<Script Language = "JavaScript">n";
> strScript += "n";
> strScript += " var retval='';n";
> strScript += " retval = showModalDialog('/" +
> ConfigurationManager.AppSettings["NomProjet"].ToString() +
> "/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
> strScript += " if ( retval=='MB_Annuler' )n";
> strScript += " {n";
> strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
> "MB_Annuler") + ";n";
> strScript += " }n";
> strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
> strScript += " {n";
> strScript += " form1.Hidden1.value=
> retval;alert(form1.Hidden1.value);";
> strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
> "MB_Ok") + ";n";
> strScript += " }n";
>
> strScript += "n";
> strScript += "</Script>n";
>
> Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);
>
> Comme vous le remarquer, l'appel se fait à l'aide de "showModalDialog"
> avec
> une valeur de retour, c'est cette valeur de retour que je veux
> recuperer
> au
> niveau de la page qui inclu le UserControl.
>
> Pour schématiser : il y'a ma page qui contient le UserCotrol, le
> userControl
> fait apppel à une autre page qui constitue la structure de la boite de
> saisie
> d'où je veux recuperer la valeur saisie.
>
> Merci pour votre aide.
> Younes
>
>
>
> "Karl Seguin [MVP]" a écrit :
>
>> Si tu peus montrer du code, sa pourait aider...
>>
>> Si t'assigne ta variable on script js, tu devrais être capable
>> d'utiliser
>> Request.Form["id"]; dans ton code behind...
>>
>> Karl
>>
>> --
>> http://www.openmymind.net/
>> http://www.fuelindustries.com/
>>
>>
>> "Younes" wrote in message
>> news:
>> > Bonjour,
>> > J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée
>> > par
>> > un
>> > script js, depuis mon code behind de ma page aspnet.
>> > J'utilise un hiddenInput mais ça marche pas :(
>> >
>> > Qlq'1 peut il m'aider
>> > Merci
>> >
>> > Younes
>>
>>
>>







Avatar
Younes
Bonjour Karl,
ça devient un plaisir d'echanger avec toi :), merci bcp pour tes repliques
qui ne manquent pas de détails et de précisions.
La solution que tu viens de proposer va très bien marché du moment où on
peux acceder directemn au hiddenField par son ID.
Ce que je faisait moi en parallèle, je partage ma petite expèrience la
dessus, c'est que je rajouter un hidden avec drag &drop dans la form qui vas
utilisé mon user control (où le script précedant est généré), ça marche
aussi, sauf que dans une form avec master page faudera pensé à récuperer le
ClientID (puisque l'id change selon la region/content ou t'as posé ton hidden
control): ça marche nickel aussi sauf que j'ai pas trop aprécier puisque
logiquement je veux encapsuler le tt dans le user control, je veux pas que
l'information saisie sera récupéré depuis une hidden de la page qui heberge
le usercontrol, ni que le control soit utilisé avec des restrcition sur le
l'Id à utiliser, sur quelle region faudera le poser...(je signale qu'avec ta
version j'aurai pas ce pb, sauf que j'utiliserai tjr un hidden par quoi je
dois passer dans la page afin de récuperer sa valeur).

Maintenant voila ce que j'ai fait au final :

j'ai remplacer la ligne
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";

Par :
strScript += " __doPostBack('"+ this.ClientID.Replace('_','$') +
"', retval);n";

Remarquer que j'appelle directement l'event postback avec un argument retval
(ma variable).

Et ce n'est qu'àprès, dans la fonction suivante :
/// <summary>
/// Génére l'evenement click sur (Ok) ou click sur (Annuler)
/// </summary>
/// <param name="Args">Arguments</param>
void IPostBackEventHandler.RaisePostBackEvent(string Args)
{
//if(Args == "MB_Ok")
if (Args.Contains("MB_Ok"))
{
this.ValeurSaisie = Args.Substring(6);//le 6 pour sauter la chaine
"MB_Ok_" stocké dans retval
OnClic_Ok(new EventArgs());
}
if (Args == "MB_Annuler")
{
OnClic_Annuler(new EventArgs());
}
}
remarquer aussi que j'asssigne à 'this.ValeurSaisie' la valeur saisie dans
ma boite de saisie, et je lance l'event OnClic_Ok afin de passer la main à ma
page qui heberge le usercontrol et qui pourra acceder à la valeur saisie via
sa pté public 'ValeurSaisie'.

Voila, le seul point qui pourra me poser pb c'est l'appel en hard que je
fait ici "__doPostBack('"+ this.ClientID.Replace('_','$')" en plus de
l'utilisation du '$' au lieu de '_' pour changer le ClientID afin de coller à
celui crée après merge de ma page dans la master page.

J'aimerai bien savoir ce que tu en penses, ou ce que en pense les autres
membres de la communauté (salut à tous :) )?

Younes

"Karl Seguin [MVP]" wrote:

Oopps :) je ne sais pas comments j'ai manqué ça...

Ton code original devrais fonctionner...j'ai réussi avec:

if (Page.IsPostBack && Request.Form["__EVENTARGUMENT"] == "MB_Ok")
{
string reval = Request.Form["valeurSaisie"];
}
else
{
Page.ClientScript.RegisterHiddenField("valeurSaisie", "0");
string strScript = "";
strScript += "<Script Language = "JavaScript">n";
//...
strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
strScript += " {n";
strScript += " document.getElementById('valeurSaisie').value = retval;";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";
//...
Page.ClientScript.RegisterStartupScript(this.GetType(), "BoiteSaisie",
strScript);
}


j'assigne retval dans un HiddenInput que je crée avec
Page.ClientScript.RegisterHiddenField...


Karl
--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Bonjour Karl,
> tt d'abord j'aimerai te remercier pour tes reponse et le temps que tu me
> reserve pour chacune, thank you :).
>
> Mainteant, je pense k'on s'est pas mis d'accord sur un truc, c'est que moi
> je cherche à recuperer la valeur de la variable 'retval' (regarde le
> script)
> et non le string 'MB_Ok' que je passe en param à mon evenement.
> Ceci est dit, s'il y'a moyen de faire passer la valeur de la variable
> 'retval' dans les argument de l'evenement ça sera une bonne solution.
>
> Qu'en pensez vous?
>
> Younes
>
> "Karl Seguin [MVP]" wrote:
>
>> Younes:
>> Si t'utilises GetPostBackEventReference, c'est très facile, tu n'as pas
>> besoin de hiddenInput.
>>
>> Dans to UserControl, tu peus simplement fair:
>>
>> if (Page.IsPostBack && Request.Form["__EVENTTARGET"] == this.UniqueID)
>> {
>> string valeur = Request.Form["__EVENTARGUMENT"];
>> }
>>
>> La première valeur que to passe à GetPostBackEventReference et inseré
>> dans
>> __EVENTTARGET et la deuxeme dans __EVENTARGUMENTS. En réality c'est des
>> champs hiddenInput.
>>
>> Karl
>>
>> --
>> http://www.openmymind.net/
>> http://www.fuelindustries.com/
>>
>>
>> "Younes" wrote in message
>> news:
>> > Salut Karl,
>> >
>> > Le contexte de ma question est le suivant :
>> > Je veux mettre en place un UserControl qui constituera une boite de
>> > siaise,
>> > dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place une
>> > page
>> > aspx qui contient une zone de texte et deux bouttons, le UserControl
>> > affiche
>> > cette page à l'aide du script suivant :
>> >
>> > string strScript = "";
>> > strScript += "<Script Language = "JavaScript">n";
>> > strScript += "n";
>> > strScript += " var retval='';n";
>> > strScript += " retval = showModalDialog('/" +
>> > ConfigurationManager.AppSettings["NomProjet"].ToString() +
>> > "/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
>> > strScript += " if ( retval=='MB_Annuler' )n";
>> > strScript += " {n";
>> > strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> > "MB_Annuler") + ";n";
>> > strScript += " }n";
>> > strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
>> > strScript += " {n";
>> > strScript += " form1.Hidden1.value=
>> > retval;alert(form1.Hidden1.value);";
>> > strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> > "MB_Ok") + ";n";
>> > strScript += " }n";
>> >
>> > strScript += "n";
>> > strScript += "</Script>n";
>> >
>> > Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);
>> >
>> > Comme vous le remarquer, l'appel se fait à l'aide de "showModalDialog"
>> > avec
>> > une valeur de retour, c'est cette valeur de retour que je veux
>> > recuperer
>> > au
>> > niveau de la page qui inclu le UserControl.
>> >
>> > Pour schématiser : il y'a ma page qui contient le UserCotrol, le
>> > userControl
>> > fait apppel à une autre page qui constitue la structure de la boite de
>> > saisie
>> > d'où je veux recuperer la valeur saisie.
>> >
>> > Merci pour votre aide.
>> > Younes
>> >
>> >
>> >
>> > "Karl Seguin [MVP]" a écrit :
>> >
>> >> Si tu peus montrer du code, sa pourait aider...
>> >>
>> >> Si t'assigne ta variable on script js, tu devrais être capable
>> >> d'utiliser
>> >> Request.Form["id"]; dans ton code behind...
>> >>
>> >> Karl
>> >>
>> >> --
>> >> http://www.openmymind.net/
>> >> http://www.fuelindustries.com/
>> >>
>> >>
>> >> "Younes" wrote in message
>> >> news:
>> >> > Bonjour,
>> >> > J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée
>> >> > par
>> >> > un
>> >> > script js, depuis mon code behind de ma page aspnet.
>> >> > J'utilise un hiddenInput mais ça marche pas :(
>> >> >
>> >> > Qlq'1 peut il m'aider
>> >> > Merci
>> >> >
>> >> > Younes
>> >>
>> >>
>> >>
>>
>>
>>





Avatar
Karl Seguin [MVP]
C'est très bien!

Je crois que this.UniqueId va te donner la même chose get
this.ClientID.ReplacE('_', '$');

Aussi, je te recommende fortement d'utiliser un StringBuilder pour
"strScript".

StringBuilder strScript = new StringBuilder();
strScript.Append("....");


ajouter des string plusieur foix (4-5+) peut causer des petit problème de
performance..

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
Bonjour Karl,
ça devient un plaisir d'echanger avec toi :), merci bcp pour tes repliques
qui ne manquent pas de détails et de précisions.
La solution que tu viens de proposer va très bien marché du moment où on
peux acceder directemn au hiddenField par son ID.
Ce que je faisait moi en parallèle, je partage ma petite expèrience la
dessus, c'est que je rajouter un hidden avec drag &drop dans la form qui
vas
utilisé mon user control (où le script précedant est généré), ça marche
aussi, sauf que dans une form avec master page faudera pensé à récuperer
le
ClientID (puisque l'id change selon la region/content ou t'as posé ton
hidden
control): ça marche nickel aussi sauf que j'ai pas trop aprécier puisque
logiquement je veux encapsuler le tt dans le user control, je veux pas que
l'information saisie sera récupéré depuis une hidden de la page qui
heberge
le usercontrol, ni que le control soit utilisé avec des restrcition sur le
l'Id à utiliser, sur quelle region faudera le poser...(je signale qu'avec
ta
version j'aurai pas ce pb, sauf que j'utiliserai tjr un hidden par quoi je
dois passer dans la page afin de récuperer sa valeur).

Maintenant voila ce que j'ai fait au final :

j'ai remplacer la ligne
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";

Par :
strScript += " __doPostBack('"+ this.ClientID.Replace('_','$')
+
"', retval);n";

Remarquer que j'appelle directement l'event postback avec un argument
retval
(ma variable).

Et ce n'est qu'àprès, dans la fonction suivante :
/// <summary>
/// Génére l'evenement click sur (Ok) ou click sur (Annuler)
/// </summary>
/// <param name="Args">Arguments</param>
void IPostBackEventHandler.RaisePostBackEvent(string Args)
{
//if(Args == "MB_Ok")
if (Args.Contains("MB_Ok"))
{
this.ValeurSaisie = Args.Substring(6);//le 6 pour sauter la chaine
"MB_Ok_" stocké dans retval
OnClic_Ok(new EventArgs());
}
if (Args == "MB_Annuler")
{
OnClic_Annuler(new EventArgs());
}
}
remarquer aussi que j'asssigne à 'this.ValeurSaisie' la valeur saisie dans
ma boite de saisie, et je lance l'event OnClic_Ok afin de passer la main à
ma
page qui heberge le usercontrol et qui pourra acceder à la valeur saisie
via
sa pté public 'ValeurSaisie'.

Voila, le seul point qui pourra me poser pb c'est l'appel en hard que je
fait ici "__doPostBack('"+ this.ClientID.Replace('_','$')" en plus de
l'utilisation du '$' au lieu de '_' pour changer le ClientID afin de
coller à
celui crée après merge de ma page dans la master page.

J'aimerai bien savoir ce que tu en penses, ou ce que en pense les autres
membres de la communauté (salut à tous :) )?

Younes

"Karl Seguin [MVP]" wrote:

Oopps :) je ne sais pas comments j'ai manqué ça...

Ton code original devrais fonctionner...j'ai réussi avec:

if (Page.IsPostBack && Request.Form["__EVENTARGUMENT"] == "MB_Ok")
{
string reval = Request.Form["valeurSaisie"];
}
else
{
Page.ClientScript.RegisterHiddenField("valeurSaisie", "0");
string strScript = "";
strScript += "<Script Language = "JavaScript">n";
//...
strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
strScript += " {n";
strScript += " document.getElementById('valeurSaisie').value = retval;";
strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
"MB_Ok") + ";n";
//...
Page.ClientScript.RegisterStartupScript(this.GetType(), "BoiteSaisie",
strScript);
}


j'assigne retval dans un HiddenInput que je crée avec
Page.ClientScript.RegisterHiddenField...


Karl
--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Bonjour Karl,
> tt d'abord j'aimerai te remercier pour tes reponse et le temps que tu
> me
> reserve pour chacune, thank you :).
>
> Mainteant, je pense k'on s'est pas mis d'accord sur un truc, c'est que
> moi
> je cherche à recuperer la valeur de la variable 'retval' (regarde le
> script)
> et non le string 'MB_Ok' que je passe en param à mon evenement.
> Ceci est dit, s'il y'a moyen de faire passer la valeur de la variable
> 'retval' dans les argument de l'evenement ça sera une bonne solution.
>
> Qu'en pensez vous?
>
> Younes
>
> "Karl Seguin [MVP]" wrote:
>
>> Younes:
>> Si t'utilises GetPostBackEventReference, c'est très facile, tu n'as
>> pas
>> besoin de hiddenInput.
>>
>> Dans to UserControl, tu peus simplement fair:
>>
>> if (Page.IsPostBack && Request.Form["__EVENTTARGET"] == this.UniqueID)
>> {
>> string valeur = Request.Form["__EVENTARGUMENT"];
>> }
>>
>> La première valeur que to passe à GetPostBackEventReference et inseré
>> dans
>> __EVENTTARGET et la deuxeme dans __EVENTARGUMENTS. En réality c'est
>> des
>> champs hiddenInput.
>>
>> Karl
>>
>> --
>> http://www.openmymind.net/
>> http://www.fuelindustries.com/
>>
>>
>> "Younes" wrote in message
>> news:
>> > Salut Karl,
>> >
>> > Le contexte de ma question est le suivant :
>> > Je veux mettre en place un UserControl qui constituera une boite de
>> > siaise,
>> > dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place
>> > une
>> > page
>> > aspx qui contient une zone de texte et deux bouttons, le UserControl
>> > affiche
>> > cette page à l'aide du script suivant :
>> >
>> > string strScript = "";
>> > strScript += "<Script Language = "JavaScript">n";
>> > strScript += "n";
>> > strScript += " var retval='';n";
>> > strScript += " retval = showModalDialog('/" +
>> > ConfigurationManager.AppSettings["NomProjet"].ToString() +
>> > "/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
>> > strScript += " if ( retval=='MB_Annuler' )n";
>> > strScript += " {n";
>> > strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> > "MB_Annuler") + ";n";
>> > strScript += " }n";
>> > strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
>> > strScript += " {n";
>> > strScript += " form1.Hidden1.value >> >> > retval;alert(form1.Hidden1.value);";
>> > strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> > "MB_Ok") + ";n";
>> > strScript += " }n";
>> >
>> > strScript += "n";
>> > strScript += "</Script>n";
>> >
>> > Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);
>> >
>> > Comme vous le remarquer, l'appel se fait à l'aide de
>> > "showModalDialog"
>> > avec
>> > une valeur de retour, c'est cette valeur de retour que je veux
>> > recuperer
>> > au
>> > niveau de la page qui inclu le UserControl.
>> >
>> > Pour schématiser : il y'a ma page qui contient le UserCotrol, le
>> > userControl
>> > fait apppel à une autre page qui constitue la structure de la boite
>> > de
>> > saisie
>> > d'où je veux recuperer la valeur saisie.
>> >
>> > Merci pour votre aide.
>> > Younes
>> >
>> >
>> >
>> > "Karl Seguin [MVP]" a écrit :
>> >
>> >> Si tu peus montrer du code, sa pourait aider...
>> >>
>> >> Si t'assigne ta variable on script js, tu devrais être capable
>> >> d'utiliser
>> >> Request.Form["id"]; dans ton code behind...
>> >>
>> >> Karl
>> >>
>> >> --
>> >> http://www.openmymind.net/
>> >> http://www.fuelindustries.com/
>> >>
>> >>
>> >> "Younes" wrote in message
>> >> news:
>> >> > Bonjour,
>> >> > J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée
>> >> > par
>> >> > un
>> >> > script js, depuis mon code behind de ma page aspnet.
>> >> > J'utilise un hiddenInput mais ça marche pas :(
>> >> >
>> >> > Qlq'1 peut il m'aider
>> >> > Merci
>> >> >
>> >> > Younes
>> >>
>> >>
>> >>
>>
>>
>>







Avatar
Younes
Ok merci pour l'aide et le temps accordé.

i will take into consideration you're remark about the buildstring ;)
Till next time.
Ah, an other thing, i'm wondering if i can get you're msn contact to have
more discussion in other topic maby, if you're interested here mine :


Thank you again

younes

"Karl Seguin [MVP]" wrote:

C'est très bien!

Je crois que this.UniqueId va te donner la même chose get
this.ClientID.ReplacE('_', '$');

Aussi, je te recommende fortement d'utiliser un StringBuilder pour
"strScript".

StringBuilder strScript = new StringBuilder();
strScript.Append("....");


ajouter des string plusieur foix (4-5+) peut causer des petit problème de
performance..

Karl

--
http://www.openmymind.net/
http://www.fuelindustries.com/


"Younes" wrote in message
news:
> Bonjour Karl,
> ça devient un plaisir d'echanger avec toi :), merci bcp pour tes repliques
> qui ne manquent pas de détails et de précisions.
> La solution que tu viens de proposer va très bien marché du moment où on
> peux acceder directemn au hiddenField par son ID.
> Ce que je faisait moi en parallèle, je partage ma petite expèrience la
> dessus, c'est que je rajouter un hidden avec drag &drop dans la form qui
> vas
> utilisé mon user control (où le script précedant est généré), ça marche
> aussi, sauf que dans une form avec master page faudera pensé à récuperer
> le
> ClientID (puisque l'id change selon la region/content ou t'as posé ton
> hidden
> control): ça marche nickel aussi sauf que j'ai pas trop aprécier puisque
> logiquement je veux encapsuler le tt dans le user control, je veux pas que
> l'information saisie sera récupéré depuis une hidden de la page qui
> heberge
> le usercontrol, ni que le control soit utilisé avec des restrcition sur le
> l'Id à utiliser, sur quelle region faudera le poser...(je signale qu'avec
> ta
> version j'aurai pas ce pb, sauf que j'utiliserai tjr un hidden par quoi je
> dois passer dans la page afin de récuperer sa valeur).
>
> Maintenant voila ce que j'ai fait au final :
>
> j'ai remplacer la ligne
> strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
> "MB_Ok") + ";n";
>
> Par :
> strScript += " __doPostBack('"+ this.ClientID.Replace('_','$')
> +
> "', retval);n";
>
> Remarquer que j'appelle directement l'event postback avec un argument
> retval
> (ma variable).
>
> Et ce n'est qu'àprès, dans la fonction suivante :
> /// <summary>
> /// Génére l'evenement click sur (Ok) ou click sur (Annuler)
> /// </summary>
> /// <param name="Args">Arguments</param>
> void IPostBackEventHandler.RaisePostBackEvent(string Args)
> {
> //if(Args == "MB_Ok")
> if (Args.Contains("MB_Ok"))
> {
> this.ValeurSaisie = Args.Substring(6);//le 6 pour sauter la chaine
> "MB_Ok_" stocké dans retval
> OnClic_Ok(new EventArgs());
> }
> if (Args == "MB_Annuler")
> {
> OnClic_Annuler(new EventArgs());
> }
> }
> remarquer aussi que j'asssigne à 'this.ValeurSaisie' la valeur saisie dans
> ma boite de saisie, et je lance l'event OnClic_Ok afin de passer la main à
> ma
> page qui heberge le usercontrol et qui pourra acceder à la valeur saisie
> via
> sa pté public 'ValeurSaisie'.
>
> Voila, le seul point qui pourra me poser pb c'est l'appel en hard que je
> fait ici "__doPostBack('"+ this.ClientID.Replace('_','$')" en plus de
> l'utilisation du '$' au lieu de '_' pour changer le ClientID afin de
> coller à
> celui crée après merge de ma page dans la master page.
>
> J'aimerai bien savoir ce que tu en penses, ou ce que en pense les autres
> membres de la communauté (salut à tous :) )?
>
> Younes
>
> "Karl Seguin [MVP]" wrote:
>
>> Oopps :) je ne sais pas comments j'ai manqué ça...
>>
>> Ton code original devrais fonctionner...j'ai réussi avec:
>>
>> if (Page.IsPostBack && Request.Form["__EVENTARGUMENT"] == "MB_Ok")
>> {
>> string reval = Request.Form["valeurSaisie"];
>> }
>> else
>> {
>> Page.ClientScript.RegisterHiddenField("valeurSaisie", "0");
>> string strScript = "";
>> strScript += "<Script Language = "JavaScript">n";
>> //...
>> strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
>> strScript += " {n";
>> strScript += " document.getElementById('valeurSaisie').value = retval;";
>> strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> "MB_Ok") + ";n";
>> //...
>> Page.ClientScript.RegisterStartupScript(this.GetType(), "BoiteSaisie",
>> strScript);
>> }
>>
>>
>> j'assigne retval dans un HiddenInput que je crée avec
>> Page.ClientScript.RegisterHiddenField...
>>
>>
>> Karl
>> --
>> http://www.openmymind.net/
>> http://www.fuelindustries.com/
>>
>>
>> "Younes" wrote in message
>> news:
>> > Bonjour Karl,
>> > tt d'abord j'aimerai te remercier pour tes reponse et le temps que tu
>> > me
>> > reserve pour chacune, thank you :).
>> >
>> > Mainteant, je pense k'on s'est pas mis d'accord sur un truc, c'est que
>> > moi
>> > je cherche à recuperer la valeur de la variable 'retval' (regarde le
>> > script)
>> > et non le string 'MB_Ok' que je passe en param à mon evenement.
>> > Ceci est dit, s'il y'a moyen de faire passer la valeur de la variable
>> > 'retval' dans les argument de l'evenement ça sera une bonne solution.
>> >
>> > Qu'en pensez vous?
>> >
>> > Younes
>> >
>> > "Karl Seguin [MVP]" wrote:
>> >
>> >> Younes:
>> >> Si t'utilises GetPostBackEventReference, c'est très facile, tu n'as
>> >> pas
>> >> besoin de hiddenInput.
>> >>
>> >> Dans to UserControl, tu peus simplement fair:
>> >>
>> >> if (Page.IsPostBack && Request.Form["__EVENTTARGET"] == this.UniqueID)
>> >> {
>> >> string valeur = Request.Form["__EVENTARGUMENT"];
>> >> }
>> >>
>> >> La première valeur que to passe à GetPostBackEventReference et inseré
>> >> dans
>> >> __EVENTTARGET et la deuxeme dans __EVENTARGUMENTS. En réality c'est
>> >> des
>> >> champs hiddenInput.
>> >>
>> >> Karl
>> >>
>> >> --
>> >> http://www.openmymind.net/
>> >> http://www.fuelindustries.com/
>> >>
>> >>
>> >> "Younes" wrote in message
>> >> news:
>> >> > Salut Karl,
>> >> >
>> >> > Le contexte de ma question est le suivant :
>> >> > Je veux mettre en place un UserControl qui constituera une boite de
>> >> > siaise,
>> >> > dailog box ou l'utilisateur va saisir qlq chose, j'ai mis en place
>> >> > une
>> >> > page
>> >> > aspx qui contient une zone de texte et deux bouttons, le UserControl
>> >> > affiche
>> >> > cette page à l'aide du script suivant :
>> >> >
>> >> > string strScript = "";
>> >> > strScript += "<Script Language = "JavaScript">n";
>> >> > strScript += "n";
>> >> > strScript += " var retval='';n";
>> >> > strScript += " retval = showModalDialog('/" +
>> >> > ConfigurationManager.AppSettings["NomProjet"].ToString() +
>> >> > "/Utilitaires/BoiteSaisie.aspx',window,'scroll:off;status:off;dialogWidth:510px;dialogHeight:270px');n";
>> >> > strScript += " if ( retval=='MB_Annuler' )n";
>> >> > strScript += " {n";
>> >> > strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> >> > "MB_Annuler") + ";n";
>> >> > strScript += " }n";
>> >> > strScript += " else if ( retval.indexOf('MB_Ok')>=0)n";
>> >> > strScript += " {n";
>> >> > strScript += " form1.Hidden1.value > >> >> > retval;alert(form1.Hidden1.value);";
>> >> > strScript += " " + Page.ClientScript.GetPostBackEventReference(this,
>> >> > "MB_Ok") + ";n";
>> >> > strScript += " }n";
>> >> >
>> >> > strScript += "n";
>> >> > strScript += "</Script>n";
>> >> >
>> >> > Page.ClientScript.RegisterStartupScript(typeof(object),"BoiteSaisie",strScript);
>> >> >
>> >> > Comme vous le remarquer, l'appel se fait à l'aide de
>> >> > "showModalDialog"
>> >> > avec
>> >> > une valeur de retour, c'est cette valeur de retour que je veux
>> >> > recuperer
>> >> > au
>> >> > niveau de la page qui inclu le UserControl.
>> >> >
>> >> > Pour schématiser : il y'a ma page qui contient le UserCotrol, le
>> >> > userControl
>> >> > fait apppel à une autre page qui constitue la structure de la boite
>> >> > de
>> >> > saisie
>> >> > d'où je veux recuperer la valeur saisie.
>> >> >
>> >> > Merci pour votre aide.
>> >> > Younes
>> >> >
>> >> >
>> >> >
>> >> > "Karl Seguin [MVP]" a écrit :
>> >> >
>> >> >> Si tu peus montrer du code, sa pourait aider...
>> >> >>
>> >> >> Si t'assigne ta variable on script js, tu devrais être capable
>> >> >> d'utiliser
>> >> >> Request.Form["id"]; dans ton code behind...
>> >> >>
>> >> >> Karl
>> >> >>
>> >> >> --
>> >> >> http://www.openmymind.net/
>> >> >> http://www.fuelindustries.com/
>> >> >>
>> >> >>
>> >> >> "Younes" wrote in message
>> >> >> news:
>> >> >> > Bonjour,
>> >> >> > J'ai le pb suivant, j'aimerai lire la valeur d'une variable, crée
>> >> >> > par
>> >> >> > un
>> >> >> > script js, depuis mon code behind de ma page aspnet.
>> >> >> > J'utilise un hiddenInput mais ça marche pas :(
>> >> >> >
>> >> >> > Qlq'1 peut il m'aider
>> >> >> > Merci
>> >> >> >
>> >> >> > Younes
>> >> >>
>> >> >>
>> >> >>
>> >>
>> >>
>> >>
>>
>>
>>