OVH Cloud OVH Cloud

Probleme Page_OnLoad et Bouton_OnClik

6 réponses
Avatar
Fabrice Bois
Bonjour a tous, j'ai un souci que je ne comprend pas :
Dans le global.asax, je met une varaible de session nommé Nbre
Sur une page je place un PlaceHolder. Ce PlaceHolder va acceuillir un ou
plusieurs .ascx
Je place un bouton sur la page.
Le code du Onclick du bouron incrémente la variable de session Nbre.
Dans l'évenement OnLoad de la page, je fait une boucle allant de 0 à Nbre-1
qui place dans le PlaceHolder le ascx.

En résumé : 1ère visite de la page : Nbre = 0 et le placeholder est vide
Click sur le bouton : Nbre=1 et le placeholder affiche
le .ascx
Click sur le bouton : Nbre=2 et le placeholder affiche
les deux .ascx

Seulement ca ne marche pas (et oui, ca aurait été trop beau). L'évenement
OnLoad de ma page s'effectue AVANT l'evenement OnClick du bouton (ce qui me
semble pas très logique) en conséquense, lorsque je clique sur le bouton, il
ne s'affiche rien la première fois et la variable de session = 1. Au
deuxieme click, il s'affiche qu'un ascx au lieu de deux etc etc...

Comment éviter cela ??

6 réponses

Avatar
Paul Bacelar
"Fabrice Bois" wrote in message
news:
Bonjour a tous, j'ai un souci que je ne comprend pas :
Dans le global.asax, je met une varaible de session nommé Nbre
Sur une page je place un PlaceHolder. Ce PlaceHolder va acceuillir un ou
plusieurs .ascx
Je place un bouton sur la page.
Le code du Onclick du bouron incrémente la variable de session Nbre.
Dans l'évenement OnLoad de la page, je fait une boucle allant de 0 à


Nbre-1
qui place dans le PlaceHolder le ascx.

En résumé : 1ère visite de la page : Nbre = 0 et le placeholder est vide
Click sur le bouton : Nbre=1 et le placeholder affiche
le .ascx
Click sur le bouton : Nbre=2 et le placeholder affiche
les deux .ascx

Seulement ca ne marche pas (et oui, ca aurait été trop beau). L'évenement
OnLoad de ma page s'effectue AVANT l'evenement OnClick du bouton (ce qui


me
semble pas très logique) en conséquense, lorsque je clique sur le bouton,


il

Pour moi, c'est très logique, mais bon c'est relatif.


ne s'affiche rien la première fois et la variable de session = 1. Au
deuxieme click, il s'affiche qu'un ascx au lieu de deux etc etc...

Comment éviter cela ??





Le plus simple est de créer le bouton dans le traitement de l'évènement de
click.

Si vous appliquez cette logique, vous verrez que tous s'emboîtent
parfaitement.

C'est la magie d'ASP.NET, vous suivez ses préceptes et tout deviendra d'une
simplicité enfantine.


--
Paul Bacelar
Avatar
Fabrice Bois
Merci de ta réponse mais j'avoue ne pas comprendre, il faut que je créé le
bouton dans le traitement de l'évènement click du même bouton ?

Quoi qu'il en soit, il fallait que je solutionne ce problème rapidement, je
suis donc passé par les bases de données. L'évenement click m'actionne
simplement un insert suivi d'un databind.

Malgré tout, cela m'interesse de solutionner le souci que j'ai rencontré ne
serait ce que pour la satisfaction de comprendre le problème et d'en saisir
la solution !



"Paul Bacelar" a écrit dans le message
de news: dbtr64$197$
"Fabrice Bois" wrote in message
news:
Bonjour a tous, j'ai un souci que je ne comprend pas :
Dans le global.asax, je met une varaible de session nommé Nbre
Sur une page je place un PlaceHolder. Ce PlaceHolder va acceuillir un ou
plusieurs .ascx
Je place un bouton sur la page.
Le code du Onclick du bouron incrémente la variable de session Nbre.
Dans l'évenement OnLoad de la page, je fait une boucle allant de 0 à


Nbre-1
qui place dans le PlaceHolder le ascx.

En résumé : 1ère visite de la page : Nbre = 0 et le placeholder est vide
Click sur le bouton : Nbre=1 et le placeholder
affiche
le .ascx
Click sur le bouton : Nbre=2 et le placeholder
affiche
les deux .ascx

Seulement ca ne marche pas (et oui, ca aurait été trop beau). L'évenement
OnLoad de ma page s'effectue AVANT l'evenement OnClick du bouton (ce qui


me
semble pas très logique) en conséquense, lorsque je clique sur le bouton,


il

Pour moi, c'est très logique, mais bon c'est relatif.


ne s'affiche rien la première fois et la variable de session = 1. Au
deuxieme click, il s'affiche qu'un ascx au lieu de deux etc etc...

Comment éviter cela ??





Le plus simple est de créer le bouton dans le traitement de l'évènement de
click.

Si vous appliquez cette logique, vous verrez que tous s'emboîtent
parfaitement.

C'est la magie d'ASP.NET, vous suivez ses préceptes et tout deviendra
d'une
simplicité enfantine.


--
Paul Bacelar





Avatar
TheHach
"Fabrice Bois" wrote in
news:#:

Merci de ta réponse mais j'avoue ne pas comprendre, il faut que je
créé le bouton dans le traitement de l'évènement click du même bouton
?

Quoi qu'il en soit, il fallait que je solutionne ce problème
rapidement, je suis donc passé par les bases de données. L'évenement
click m'actionne simplement un insert suivi d'un databind.

Malgré tout, cela m'interesse de solutionner le souci que j'ai
rencontré ne serait ce que pour la satisfaction de comprendre le
problème et d'en saisir la solution !






Et si tu mets ta boucle qui place les ascx dans le Pre_Render plutôt que
dans le On_Load, ça ne fonctionne pas mieux ??
Avatar
Fabrice Bois
Et bien non, la boucle dans le Pre Render me fait perdre les données
préalablement saisies dans les ascx par l'utilisateur. Seul le OnLoad me
conserve ces données (j'ai testé)


"TheHach" a écrit dans le message de news:

"Fabrice Bois" wrote in
news:#:

Merci de ta réponse mais j'avoue ne pas comprendre, il faut que je
créé le bouton dans le traitement de l'évènement click du même bouton
?

Quoi qu'il en soit, il fallait que je solutionne ce problème
rapidement, je suis donc passé par les bases de données. L'évenement
click m'actionne simplement un insert suivi d'un databind.

Malgré tout, cela m'interesse de solutionner le souci que j'ai
rencontré ne serait ce que pour la satisfaction de comprendre le
problème et d'en saisir la solution !






Et si tu mets ta boucle qui place les ascx dans le Pre_Render plutôt que
dans le On_Load, ça ne fonctionne pas mieux ??


Avatar
Paul Bacelar
Pour une vue d'ensemble des contrôles dynamiques.

http://aspnet.4guysfromrolla.com/articles/081402-1.aspx

Pensez à bien assimiler les différentes phases de la création d'une page
ASP.NET.

--
Paul Bacelar

"Fabrice Bois" wrote in message
news:#
Merci de ta réponse mais j'avoue ne pas comprendre, il faut que je créé le
bouton dans le traitement de l'évènement click du même bouton ?

Quoi qu'il en soit, il fallait que je solutionne ce problème rapidement,


je
suis donc passé par les bases de données. L'évenement click m'actionne
simplement un insert suivi d'un databind.

Malgré tout, cela m'interesse de solutionner le souci que j'ai rencontré


ne
serait ce que pour la satisfaction de comprendre le problème et d'en


saisir
la solution !



"Paul Bacelar" a écrit dans le message
de news: dbtr64$197$
> "Fabrice Bois" wrote in message
> news:
>> Bonjour a tous, j'ai un souci que je ne comprend pas :
>> Dans le global.asax, je met une varaible de session nommé Nbre
>> Sur une page je place un PlaceHolder. Ce PlaceHolder va acceuillir un


ou
>> plusieurs .ascx
>> Je place un bouton sur la page.
>> Le code du Onclick du bouron incrémente la variable de session Nbre.
>> Dans l'évenement OnLoad de la page, je fait une boucle allant de 0 à
> Nbre-1
>> qui place dans le PlaceHolder le ascx.
>>
>> En résumé : 1ère visite de la page : Nbre = 0 et le placeholder est


vide
>> Click sur le bouton : Nbre=1 et le placeholder
>> affiche
>> le .ascx
>> Click sur le bouton : Nbre=2 et le placeholder
>> affiche
>> les deux .ascx
>>
>> Seulement ca ne marche pas (et oui, ca aurait été trop beau).


L'évenement
>> OnLoad de ma page s'effectue AVANT l'evenement OnClick du bouton (ce


qui
> me
>> semble pas très logique) en conséquense, lorsque je clique sur le


bouton,
> il
>
> Pour moi, c'est très logique, mais bon c'est relatif.
>
>
>> ne s'affiche rien la première fois et la variable de session = 1. Au
>> deuxieme click, il s'affiche qu'un ascx au lieu de deux etc etc...
>>
>> Comment éviter cela ??
>>
>>
>
> Le plus simple est de créer le bouton dans le traitement de l'évènement


de
> click.
>
> Si vous appliquez cette logique, vous verrez que tous s'emboîtent
> parfaitement.
>
> C'est la magie d'ASP.NET, vous suivez ses préceptes et tout deviendra
> d'une
> simplicité enfantine.
>
>
> --
> Paul Bacelar
>
>
>




Avatar
Fabrice Bois
Je ne connaissais pas encore ce site, merci de m'avoir fait connaitre le
lien, il me semble très intéressant.


"Paul Bacelar" a écrit dans le message
de news:
Pour une vue d'ensemble des contrôles dynamiques.

http://aspnet.4guysfromrolla.com/articles/081402-1.aspx

Pensez à bien assimiler les différentes phases de la création d'une page
ASP.NET.

--
Paul Bacelar

"Fabrice Bois" wrote in message
news:#
Merci de ta réponse mais j'avoue ne pas comprendre, il faut que je créé
le
bouton dans le traitement de l'évènement click du même bouton ?

Quoi qu'il en soit, il fallait que je solutionne ce problème rapidement,


je
suis donc passé par les bases de données. L'évenement click m'actionne
simplement un insert suivi d'un databind.

Malgré tout, cela m'interesse de solutionner le souci que j'ai rencontré


ne
serait ce que pour la satisfaction de comprendre le problème et d'en


saisir
la solution !



"Paul Bacelar" a écrit dans le
message
de news: dbtr64$197$
> "Fabrice Bois" wrote in message
> news:
>> Bonjour a tous, j'ai un souci que je ne comprend pas :
>> Dans le global.asax, je met une varaible de session nommé Nbre
>> Sur une page je place un PlaceHolder. Ce PlaceHolder va acceuillir un


ou
>> plusieurs .ascx
>> Je place un bouton sur la page.
>> Le code du Onclick du bouron incrémente la variable de session Nbre.
>> Dans l'évenement OnLoad de la page, je fait une boucle allant de 0 à
> Nbre-1
>> qui place dans le PlaceHolder le ascx.
>>
>> En résumé : 1ère visite de la page : Nbre = 0 et le placeholder est


vide
>> Click sur le bouton : Nbre=1 et le placeholder
>> affiche
>> le .ascx
>> Click sur le bouton : Nbre=2 et le placeholder
>> affiche
>> les deux .ascx
>>
>> Seulement ca ne marche pas (et oui, ca aurait été trop beau).


L'évenement
>> OnLoad de ma page s'effectue AVANT l'evenement OnClick du bouton (ce


qui
> me
>> semble pas très logique) en conséquense, lorsque je clique sur le


bouton,
> il
>
> Pour moi, c'est très logique, mais bon c'est relatif.
>
>
>> ne s'affiche rien la première fois et la variable de session = 1. Au
>> deuxieme click, il s'affiche qu'un ascx au lieu de deux etc etc...
>>
>> Comment éviter cela ??
>>
>>
>
> Le plus simple est de créer le bouton dans le traitement de l'évènement


de
> click.
>
> Si vous appliquez cette logique, vous verrez que tous s'emboîtent
> parfaitement.
>
> C'est la magie d'ASP.NET, vous suivez ses préceptes et tout deviendra
> d'une
> simplicité enfantine.
>
>
> --
> Paul Bacelar
>
>
>