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 :

Récupération d'une structure passée dans une variable de session


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut Récupération d'une structure passée dans une variable de session
    Bonjour,
    Je passe une structure de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string hEmployes = "hEmployes";
    HttpContext.Current.Session.Add(hEmployes, nbHEmployes);
    nbHEmployes est declaré comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.nbHEmployes=new Horaire[256,7][] ;
    Et je le recherche dans la page où j'en ai besoin comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string tableau2 = "hEmployes"; 
    nbHEmployes = (Horaire[,][])HttpContext.Current.Session[tableau2];
    Mais je ne récupère rien. Où est l'erreur?

    Merci de votre aide

  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 : 42
    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 754
    Points
    39 754
    Par défaut
    est-ce que Horaire est bien sérialisable ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    je sais pas c'est une structure que j'ai créé.

    L'erreur que j'ai c'est : Impossible d'effectuer un cast d'un objet de
    type 'Horaire[][,]' en type 'Horaire[][,]'.

  4. #4
    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 : 42
    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 754
    Points
    39 754
    Par défaut
    Citation Envoyé par oclone Voir le message
    Impossible d'effectuer un cast d'un objet de
    type 'Horaire[][,]' en type 'Horaire[][,]'.

    bizarre, ça...

    Pour la sérialisation, il faut que ta structure implémente l'interface ISerializable et porte l'attribut SerializableAttribute

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Ma structure pour le moment c ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            protected struct Horaire
            {
                public int couleur;
                public string heureDebut;
                public string heureFin;
     
                public Horaire(int c, string hBegin, string hEnd)
                {
                    couleur = c;
                    heureDebut = hBegin;
                    heureFin = hEnd;
                }
            }
    Ca donne quoi avec les trucs de serialisation?

  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 : 42
    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 754
    Points
    39 754
    Par défaut
    Citation Envoyé par oclone Voir le message
    Ca donne quoi avec les trucs de serialisation?
    suis le lien que je t'ai donné, il y a un exemple

    mais en fait je ne suis pas sûr que ça ait un rapport avec le fait que ta structure soit sérialisable ou non...

  7. #7
    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
    Citation Envoyé par oclone Voir le message
    Bonjour,
    Je passe une structure de la façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string hEmployes = "hEmployes";
    HttpContext.Current.Session.Add(hEmployes, nbHEmployes);
    nbHEmployes est declaré comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.nbHEmployes=new Horaire[256,7][] ;
    Et je le recherche dans la page où j'en ai besoin comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string tableau2 = "hEmployes"; 
    nbHEmployes = (Horaire[,][])HttpContext.Current.Session[tableau2];
    Mais je ne récupère rien. Où est l'erreur?

    Merci de votre aide
    c'est à dire tu ne récupère rien ?
    Quel est la définition de nbHEmployes ? Si nbHEmployes est de type Horaire[,][], d'après ce que tu as mis, tu vas récupérer un tableau de [256,7] vide (256 employés et nombre d'horaires par jours ?) ...
    Le message d'erreur que tu transmets, tu l'as tapé ou tu as copié collé parce que l'ordre de la virgule change, vérifie qd même ...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Salut,
    le message d'erreur est un copié collé, pas d'erreur de virgule.

    Comment ca recupérer un tableau vide?
    Je veux mon tableau dans l'état où il était sur l'autre page.

    Si je fais pareil avec un string[,][] ça fonctionne !?

  9. #9
    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
    met cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string tableau2 = "hEmployes"; 
    nbHEmployes = (Horaire[,][])HttpContext.Current.Session[tableau2];
    A la suite de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string hEmployes = "hEmployes";
    HttpContext.Current.Session.Add(hEmployes, nbHEmployes);
    et regarde la valeur de nbHEmployes ...

    this.nbHEmployes est déclaré comment ?

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Il est déclaré comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Horaire[,][] nbHEmployes;
    Et après avoir mis ce que t'as dit dans la page de départ j'obtiens correctement mon tableau.

  11. #11
    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 ne reste plus que cette ligne alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.nbHEmployes=new Horaire[256,7][] ;
    es-tu bien sûre que ton tableau de départ contient [256,7] enregistrements ?
    Comment tu as instancié nbHEmployes dans la page de départ ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 304
    Points : 53
    Points
    53
    Par défaut
    Je l'ai instancié comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    this.nbHEmployes=new Horaire[256,7][] ;
    for (int e = 0; e < 256; e++)
            for (int g = 0; g < 7; g++){
                   this.nbHEmployes[e, g] = 
                   new Horaire[2]{new Horaire(),new Horaire()};
            }

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Réponses: 4
    Dernier message: 17/01/2008, 23h50
  3. Structure imbriqué dans une structure
    Par beb1982 dans le forum Débuter
    Réponses: 7
    Dernier message: 08/08/2007, 16h27
  4. Réponses: 3
    Dernier message: 29/06/2007, 15h29
  5. Réponses: 12
    Dernier message: 25/04/2007, 11h36

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