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 vider le tampon d'Application[""]


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut Comment vider le tampon d'Application[""]
    Bonjour j'utilise Application[""] pour transférer des variables entre 2 pages, mais apparemment il garde la variable transmise en tampon ce qui fait que quand je clic deux fois de suite j'obtiens la même variable et la troisième fois la variable change, voici le code pour transmettre la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
        {
                Application["mb"] = GridView2.SelectedRow.Cells[1].Text;
        }
    et celui qui récupéré la variable puis l'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        protected void Page_Load(object sender, EventArgs e)
        {
                TextBox4.Text = Application["mb"].ToString();
        }
    Avez vous une idée de la façon dont je peux vider la cache pour ne pas avoir la même valeur deux fois de suite ?
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ce n'est pas une histoire de cache, c'est simplement parce que l'évènement Load se produit avant l'évènement SelectedIndexChanged

    D'autre part, ce n'est pas une très bonne idée d'utiliser Application pour stocker des variables d'état propres à un utilisateur... Si tu as plusieurs utilisateurs, ça ne marchera plus ! Il vaudrait mieux stocker ces données en Session, ou les passer dans l'URL

  3. #3
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    j'ai changé pour les variable Session, j'ai maintenant ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    La référence d'objet n'est pas définie à une instance d'un objet. 
    Description 
     
    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
     
    Erreur source: 
     
     
    Ligne 22 :     {
    Ligne 23 : 
    Ligne 24 :         TextBox16.Text = Session["mb"].ToString();

  4. #4
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Parce que Session["mb"] est surement à null.
    Tu dois tester son existence avant d'y accéder


  5. #5
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    J'ai la mm erreur en mettant une valeur bidon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Session["mb"] = "afasdfs"; //GridView2.SelectedRow.Cells[1].Text

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par lazins Voir le message
    J'ai la mm erreur en mettant une valeur bidon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      Session["mb"] = "afasdfs"; //GridView2.SelectedRow.Cells[1].Text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Session.Add("mb", GridView2.SelectedRow.Cells[1].Text);

  7. #7
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    Je vérifie que la variable n'est pas vide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
         if (Session["mb"] != null)
                TextBox16.Text = Session["mb"].ToString();
            else
                TextBox16.Text = "zut!";
    l'erreur précédente n'apparait plus, mais je reviens au problème initial, le tampon ne se vide pas, la mm donnée s'affiche 2 fois de suite. et quand je fait
    je tombe à chaque fois sur le else.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Et je reviens à ce que j'ai dit au début :
    Citation Envoyé par tomlev Voir le message
    Ce n'est pas une histoire de cache, c'est simplement parce que l'évènement Load se produit avant l'évènement SelectedIndexChanged
    quoi qu'il y a un truc que j'ai pas bien compris... les 2 bouts de code que tu montres (évènements GridView2_SelectedIndexChanged et Page_Load), ils sont sur la même page ou sur 2 pages différentes ?

  9. #9
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    2 pages différente, la première page est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
        {
            Session.Add("kilo", GridView2.SelectedRow.Cells[2].Text);
        }
    En cliquant sur un bouton select je récupère la valeur d'un champ de mon gridview que je veux transmettre à la seconde page.
    et la seconde page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["kilo"] != null)
                TextBox16.Text = Session["kilo"].ToString();
            else
                TextBox16.Text = "zut!";
    }
    si je comprends bien pour que ça fonctionne correctement il me faut un bouton click pour afficher les données transmis ?

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Mmm.... si c'est 2 pages différentes, ce que j'ai dit sur l'ordre des évènements ne tient plus...
    Comment tu fais pour aller sur la 2e page ? lien ? Response.Redirect ?

  11. #11
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    Je fais un window.open au click du select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AutoGenerateSelectButton="True" onclick="openwin()"

  12. #12
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par lazins Voir le message
    Je fais un window.open au click du select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AutoGenerateSelectButton="True" onclick="openwin()"
    Bah t'ouvres ta pop up avant de setter ta variable de session. Ca risque pas de marcher

  13. #13
    Membre du Club
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 65
    Points
    65
    Par défaut
    ah d'accord, mais si je fais ainsi ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     protected void GridView2_SelectedIndexChanged(object sender, EventArgs e)
        {
              Session.Add("kilo", GridView2.SelectedRow.Cells[2].Text);
     
            Response.Write("<script>var test =   window.open('secondePage.aspx','confirm', 'toolbar=0, height= 145px, width= 305px, resizable= 0, scrollbars=0');  test.moveTo(400,200);</script>");
     
     
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [cr 8.5] comment exploiter les données d'un "array"
    Par kikidrome dans le forum SAP Crystal Reports
    Réponses: 12
    Dernier message: 09/06/2005, 14h03

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