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 :

Caster un ListItem


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Par défaut Caster un ListItem
    Bonjour,

    J'ai un petit soucis sur un passage d'objet.

    Je rempli une ListBox (c'est une multi sélection) avec des objets "Attribut" en utilisant l'objet ASP.NET ObjectDataSource (DataBinding).

    Je retrouve bien mes "Attribut" dans ma ListBox (la méthode surchargée ToString()).
    Maintenant, je souhaite pouvoir passer ces "Attribut" de la première ListBox vers une seconde (c'est un filtre, on choisi les "Attribut" présents dans ce filtre et on enregistre).

    Mais je n'arrive pas à caster l'objet ListItem en "Attribut".

    Voici le code qui sert à passer les objets d'une liste à l'autre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
        public void goRight(object sender, EventArgs e)
        {        
     
            for (int i = 0; i < lstBoxLeft.Items.Count; i++)
            {
                if (lstBoxLeft.Items[i].Selected)
                {
                    lstBoxRight.Items.Add(lstBoxLeft.Items[i]);
                }
            }
     
            for (int i = 0; i < lstBoxLeft.Items.Count; i++)
            {
                if (lstBoxLeft.Items[i].Selected)
                {
                    lstBoxLeft.Items.Remove(lstBoxLeft.Items[i]);
                    i = i-1;
                }
            }
     
            lstBoxLeft.ClearSelection();
            lstBoxRight.ClearSelection();
     
        }
     
        public void goLeft(object sender, EventArgs e)
        {
     
            for (int i = 0; i < lstBoxRight.Items.Count; i++)
            {
                if (lstBoxRight.Items[i].Selected)
                {
                    lstBoxLeft.Items.Add(lstBoxRight.Items[i]);
                }
            }
     
            for (int i = 0; i < lstBoxRight.Items.Count; i++)
            {
                if (lstBoxRight.Items[i].Selected)
                {
                    lstBoxRight.Items.Remove(lstBoxRight.Items[i]);
                    i = i - 1;
                }
            }
     
            lstBoxLeft.ClearSelection();
            lstBoxRight.ClearSelection();
        }
    et voici le code que je souhaite utiliser pour récupérer mes objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    List<Attribut> list = new List<Attribut>();
     
            foreach(ListItem item in lstBoxRight.Items){
                Attribut att = (Attribut)item;
                list.Add(att);
            }
    Même un simple code comme le suivant produit une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public void view(object sender, EventArgs e)
        {
            Attribut att = (Attribut)lstBoxLeft.SelectedItem;
            panelMessage.InnerHtml = att.Nom;
        }
    Merci d'avance à ceux qui m'aideront.

    PS : Si des choses ne sont pas claires, dites le moi.

  2. #2
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 288
    Par défaut
    Est ce qu'une exception est levée ? si oui laquelle ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    en même temps pour le coup je dirais que la reponse est dans ton code (sauf si j'ai pas tt compris)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            foreach(ListItem item in lstBoxRight.Items){
                Attribut att = (Attribut)item;
                list.Add(att);
            }
    Tu as un item qui est du type ListItem et t'essais de le caster en type Attribut.
    Y'a anguille sous roche ici.

    Quel est cette class? elle herite de ListItem?

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Par défaut
    Voici l'exception :
    Description : Une erreur s'est produite lors de la compilation d'une ressource requise pour répondre à cette demande. Veuillez consulter ci-dessous les détails relatifs à l'erreur en question, puis modifier votre code source de manière appropriée.

    Message d'erreur du compilateur: CS0030: Cannot convert type 'System.Web.UI.WebControls.ListItem' to 'DLL.Business.Attribut'

    Erreur source:



    Ligne 86 :
    Ligne 87 : foreach(ListItem item in lstBoxRight.Items){
    Ligne 88 : Attribut att = (Attribut)item;
    Ligne 89 : list.Add(att);
    Ligne 90 : }


    Fichier source: c:\Inetpub\wwwroot\reportAD\Pages\createFilter.aspx.cs Ligne: 88

  5. #5
    Membre confirmé
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Novembre 2004
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 134
    Par défaut
    Grosse erreur de ma part.

    Cette façon de faire ne se fait qu'en WinForm, pas en environnement web.

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

Discussions similaires

  1. [Reflection] caster un tableau dynamiquement
    Par Pignoufy dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 16/11/2010, 15h35
  2. Comment Caster une variable en perl?
    Par kiza dans le forum Langage
    Réponses: 8
    Dernier message: 21/10/2005, 12h33
  3. [C#] Probleme pour caster une textbox
    Par telynor dans le forum ASP.NET
    Réponses: 21
    Dernier message: 17/08/2005, 09h53
  4. [Tableau] Caster un tableau entier
    Par romainw dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/03/2005, 08h49
  5. [Debutant(e)]caster un Object
    Par bart64 dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2004, 16h26

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