IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

comment récupérer la variable globale(code behind) en javascript du fichier aspx


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut comment récupérer la variable globale(code behind) en javascript du fichier aspx
    Bonjour,

    J'ai un sujet: dans un déroulement normal, l'utilisateur saisit des champs dans un formulaire, puis enregistre et ferme. Si l'utilisateur A SAISI des champs mais il A OUBLIE d'enregistrer et il ferme, un pop up "vous avez apporté des modifications. Voulez-vous quand même fermer sans sauvegarder? OK/Annuler" s'affiche. Si OK, l'appli ferme sans sauvegarde, si Annuler, on revient au formulaire afin qu'il puisse cliquer sur le bouton "enregistrer".

    J'ai fait comme suit:
    Je déclare dans le code behind une variable globale: bAlert=false.
    A chaque OnTextChanged d'un champs de saisi: bAlert=true.
    Dans btnSave_OnClick: bAlert=false

    Dans la page aspx:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script language="javascript" type="text/javascript"> 
    function Alert()
    {
       if (document.all.bAlert.value == true)
       {
            if(!confirm('Vous avez fait des modifications. Voulez-vous quand même quitter sans sauvegarder?')) return false;
       }
    }
    </script>
     
    <asp:Button ID="btnclose" runat="server" Text="X" onClientClick="return Alert()" onclick="btnclose_Click" />
    Mon javascript ne comprend pas document.all.bAlert, ni document.all.["bAlert"].
    Avez-vous une idée? Merci!!!

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Points : 1 628
    Points
    1 628
    Par défaut
    Il est tout à fait normal de ne pas pouvoir accéder côté client à une variable déclarer côté serveur ...

    Pour accéder à cette variable tu peux éventuellement procéder ainsi avec les scriptlets :

    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Merci, maintenant j'ai mis comme t'as dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function Alert(){
               if (<%=bAlert%> == true) {...}
    }
    mais j'ai l'erreur
    Maform.bAlert est inaccessible en raison de son niveau de protection.
    Est-ce que j'ai bien déclaré ma variable global dans le code behind (comme suit)?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public partial class Maform : System.Web.UI.Page
    {
        bool bAlert=false;
        protected void Page_Load(object sender, EventArgs e)
        {...}
     ....
    }

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Points : 295
    Points
    295
    Par défaut
    un petit

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Merci encore une fois, mais j'ai reçu
    "False (ou true) est indéfini"
    & quand j'accepte le débuggage proposé par IE (car mon débugguage de VisualStudio ne permet pas le point d'arrêt dans la partie javascript), il transforme <%=bAlert%> en "False" (ou "True"), i.e.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function Alert() {
         if (False == true) {...}
    }
    avec
    "False est indéfini".
    Hic, qu'est ce que je peux faire? merci!!!

  6. #6
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    if (<%=bAlert%>) tout court ne marche pas ?
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    non, j'ai déjà essayé mais j'ai oublié de vous dire. Il met toujours
    "False indéfini" (ou "True")

  8. #8
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Alors, quelqu'un a une idée s'il vous plait? Ce n'est qu'un petit problème mais ca m'a pris beaucoup de temps, hic

  9. #9
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Et si tu tentait tout simplement d'obtenir la valeur sans majuscule ?

    Car if(true) ou if(false) marche très bien en javascript...

    Ou alors tu pourrais tout simplement faire un test dessus du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(<%=bAlert%> = "True")
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  10. #10
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    mesdames et messieurs,

    j'ai le grand plaisir de vous annoncer que vous m'avez aidé à résoudre au fur et à mesure mon pb!!! (pour ceux qui s'intéressent, derniere touche - grace a laedit - il ne faut pas mettre == en javascript mais juste = suffit & ca résolu tout!)

    merci & a bientot

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (<%= (bAlert ? "true" : "false")%>)

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    En fait j'ai parlé trop tot: il ne prend pas en compte ma variable bAlert, meme si je n'ai rien modifié le formaulaire & je ferme, il propose toujours la boite de confirmation du javascript. C'est un peu "logique", car quand j'ai mis if(<%=bAlert%>) càd sans == ou =, il geule déjà "False est indéfini" donc il n'y a pas de raison que l'erreur se trouve à == au lieu de =

    Réponse à barcelar: je n'ai pas compris à quoi ca sert ton code
    if (<%= (bAlert ? "true" : "false")%>), je le traduis:
    si(si bAlert==true alors "true", sinon "false") {...} Bah si true (i.e bAlert) alors "true", c'est pas redondant?

  13. #13
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Sans avoir pu tester, je dirais que le code de Bacelar peut cependant marcher.

    Il va produire du texte, "true" ou "false", en minuscule et qui sera donc interprété correctement par Javascript.

    Car le problème que tu avais tngtng, se posait à cause des majuscule. Javascript reconnait true mais pas True.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    1) premièrement j'affirme que = signifie affectation en javascript et == comparaison. Car j'ai remplacé ma variable globale bool bAlert=false/true en int iAlert=0/1 et dans le code javascript j'ai mis if(<%=iAlert%> = 1) il met l'erreur "impossible d'affecter à un number"

    2) deuxièmement j'ai une forte impression que l'action OnClientClick du bouton fermer est exécuté avant les OnTextChanged des composants, car si je mets if(<%=iAlert%> = 1 afin de voir le debug de javascript proposé par IE) il plante d'abord au script, avec if(0=1) (<%=iAlert%>=0 et pas =1!!!) puis quand je ferme le débuggage de javascript, il s'arrete ensuite au point d'arret OnTextChanged des composants. Càd si je mets correctement if(<%=iAlert%> == 1), il ne rentre pas dans le if et donc mon pop up ne lance pas. Tout à l'heure quand je vous ai dit que ca marchait, c'est parce que j'ai fait une affectation à true au lieu d'une comparaison donc il rentre tous les coups.

    Comment je peux faire mnt pour atteindre mon objectif, sachant que l'odre d'exécution n'est pas comme ce que j'ai pensé (ie OnTextChanged de chaque composant avant OnClientClick du bouton fermer)

    Merci! (ca fait bcp de polémie pour un RIEN & ca m'énerve!)

  15. #15
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    bacelar, laedit, j'ai testé le code de bacelar & résultat: aucun pop up.
    Ceci est peut être du au fait que l'evenement OnClientClick du bouton fermer est exécuté avant OnTextChanged des composants.
    Comment on peut débugguer javascript? Car IE ne propose le debugger que quand il y a une erreur et comme le code de bacelar n'a pas d'erreur, je ne peux pas savoir exactement si vraiment ce que je pense est vrai.
    En partant de l'idée que c'est vrai (OnClientClick du bouton fermer est exécuté avant OnTextChanged des composants), avez vous des propositions pour faire ce que je devais faire?
    Merci d'avance

  16. #16
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    Arrête moi si je me trompe, mais le OnTextChanged survient quand une des TextBox a été modifié n'est-ce pas ?

    Et OnClientClick survient lorsque tu clique sur le bouton fermer.

    Donc si tu édite les TextBox, le OnTextChanged sera forcément appelé avant que l'utilisateur clique sur le bouton fermer...
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    Normalement OUI, je suis dacc avec toi. Mais qd je debug, il ne s'arrete pas a OnTextChanged a chaque fois que je modifie qqc ds les composants. Quand je clique sur fermer, il plante d'abord (j'ai fait express pour que ca plante afin de voir le debug javascript de IE, sinon je ne sais pas quand est ce ca s'exécute), puis il va dans PageLoad, puis OnTextChanged des composants que j'ai modifié et la page est fermée. Pourquoi, je ne sais guère. J'ai l'impression que OnTextChanged n'est appelé que quand la page est validée (rechargée) mais pas à chaque fois qu'on modifie le composant (pour dire que j'ai finit ma modification d'un champs, je fais enter ou tab). Les experts en asp, please tell me if i'm right & why & how to resolve?!

  18. #18
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    ca y est, en parlant de "valider" j'ai pensé à mettre "autopostback=true" pour tous les composants et donc c'est résolu. merci de votre aide

  19. #19
    Membre émérite
    Avatar de laedit
    Homme Profil pro
    Consultant études et développement
    Inscrit en
    Décembre 2006
    Messages
    1 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant études et développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 344
    Points : 2 265
    Points
    2 265
    Par défaut
    En utilisant des contrôles HTML tu aurais pu utiliser une fonction javascript sur le textChanged et gérer tout ça en javascript, tu aurais moins galéré.
    Blog - Articles - Framework

    MSDN vous aide, si si, alors n'hésitez pas à y faire un tour avant de poser une question.
    Ah, et n'oubliez pas, Google peut répondre à la majorité de vos questions.

  20. #20
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 40
    Points
    40
    Par défaut
    merci laedit, bon à savoir...pour moi et les autres. Bon weekend à tous!!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment récupérer une variable déclarée GLOBALE dans une classe PHP
    Par Globolite dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 08/03/2013, 13h41
  2. Récupérer une variable du code-behind
    Par DJuL- dans le forum ASP.NET
    Réponses: 9
    Dernier message: 24/07/2007, 18h38
  3. Réponses: 2
    Dernier message: 22/08/2006, 11h28
  4. comment récupérer une variable membre?
    Par marute dans le forum MFC
    Réponses: 4
    Dernier message: 13/04/2006, 16h11
  5. Comment déclarer une variable globale
    Par davkick dans le forum C
    Réponses: 13
    Dernier message: 20/05/2005, 18h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo