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 :

listbox.Items.Count est à 0 alors qu'il y a des items dans la liste.


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 249
    Par défaut listbox.Items.Count est à 0 alors qu'il y a des items dans la liste.
    Salut à toutes et à tous,

    Soit 2 listbox multiselect, chacune alimentée par une sqldatasource.
    Soit 2 boutons entre les listbox.

    Voici les codes ASP des listes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:ListBoxID="ListBoxLotsSelectionnables"runat="server"BackColor="#EFF3FB"
    DataSourceID="SqlDataSourceNouveauxLotsDuMandat"DataTextField="num_nouv_lot"
    DataTextFormatString="{0:0,0}"DataValueField="num_nouv_lot"Rows="10"Width="95px"SelectionMode="Multiple">
    </asp:ListBox>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <asp:ListBoxID="ListBoxLotsSelectionnes"runat="server"BackColor="#EFF3FB"
    DataSourceID="SqlDataSourceLotsSelectionnes"DataTextField="num_nouv_lot"
    DataTextFormatString="{0:0,0}"DataValueField="num_nouv_lot"Rows="10"Width="95px"SelectionMode="Multiple">
    </asp:ListBox>
    Le but :
    Transférer les items sélectionnés d'une listbox dans l'autre.

    Le code :
    J'ai créé une fonction qui transfère les éléments d'une liste A vers une liste B.

    Voici le code:
    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
    privatevoid Alimenter_ListeA_par_ListeB(ListBox ListBoxDestination, ListBox ListBoxOrigine)
    {
    ListItemCollection ToDelete = newListItemCollection();
    foreach (ListItem item in ListBoxOrigine.Items)
    {
      if (item.Selected)
      {
          ListBoxDestination.Items.Add(item);
          ToDelete.Add(item);
      }
    }
    foreach (ListItem item in ToDelete)
    {
      ListBoxOrigine.Items.Remove(item);
    }
    #region Tri de la liste de destination
      ListItemCollection c = ListBoxDestination.Items;
      ListItem[] items = newListItem[c.Count];
      c.CopyTo(items, 0);
      System.Array.Sort(items, newmyListItemComparer());
      ListBoxDestination.Items.Clear();
      ListBoxDestination.Items.AddRange(items);
    #endregion
    #region D‚s‚lectionner tous les ‚l‚ments des 2 listes
      ListBoxOrigine.ClearSelection();
      ListBoxDestination.ClearSelection();
      #endregion
    }
    Sur le click du bouton dans un sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    protectedvoid ButtonAddLotSelectionne_Click(object sender, EventArgs e)
    {
    Alimenter_ListeA_par_ListeB(ListBoxLotsSelectionnes, ListBoxLotsSelectionnables);
    }
    Sur le click du bouton dans le sens inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    protectedvoid ButtonRemoveLotSelectionne_Click(object sender, EventArgs e)
    {
    Alimenter_ListeA_par_ListeB(ListBoxLotsSelectionnables, ListBoxLotsSelectionnes);
    }
    
    Dans le sens Liste 2 vers liste 1, ça fonctionne, mais dans le sens liste 1 vers liste 2 (ButtonAddLotSelectionne_Click), on dirait qu'il remet toujours la liste à 0 avant d'ajouter les items. Il n'ajoute pas les éléments à la liste mais remplace ceux de la liste par ceux sélectionnés dans l'autre liste.

    Je ne comprend pas ce fait vu que les listes sont identiques, à l'exception du sqldatasource et que les 2 boutons appellent la même procédure. Elles sont tellement identiques que comme je pensais m'être trompé dans la seconde, jai fait une copie de la première en ne changeant que le sqldatasource.

    Lorsque je met une break sur ButtonAddLotSelectionne_Click, il me dit à la première ligne de la procédure que
    ListBoxLotsSelectionnes.Items.Count est à 0, or la liste contient des éléments.
    Ensuite il ajoute bien les éléments sélectionnés de la première liste et retourne effectivement le
    ListBoxLotsSelectionnes.Items.Count avec le nombre d'items ajoutés.
    Une fois la procédure achevée, je vois effectivement les éléments qui étaient sélectionnés dans la première liste qui sont passés dans la seconde.
    Si je relance la procédure, le
    ListBoxLotsSelectionnes.Items.Count est de nouveau à 0.

    Pourquoi et quelle est la différence que je ne vois pas entre ces 2 listes ?

    Merci de vos z'avis z'avisés,
    Jean-Marc

  2. #2
    Membre Expert Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Par défaut
    Y a un autre moyen plus fiable de faire ce que tu cherches...

    affiche le code sql de tes SQL DataSources

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 249
    Par défaut
    Merci de ta proposition bossun, mais j'ai trouvé et j'ai oublié de fermer ce post.
    En fait le problème ne venait pas de là mais bien de la ... MasterPage. Eh oui. Le ContentPlaceHolder avait son EnableViewState à False. Sans doute une fausse manoeuvre.

    Jean-Marc

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

Discussions similaires

  1. Réponses: 35
    Dernier message: 10/04/2015, 12h33
  2. ToolTip Binding ListBox.Items.Count
    Par Lelio1407 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 17/12/2009, 16h50
  3. IE7 : Ma page est vide, alors que le code contient des choses
    Par mioux dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 12/11/2007, 10h30
  4. [XUL] Comportement des images dans les listes item
    Par Christophe Charron dans le forum Autres langages pour le Web
    Réponses: 1
    Dernier message: 02/03/2007, 12h50
  5. très bon debat sur les sgbd...mais qu'en est il alors?
    Par zax-tfh dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/05/2004, 17h01

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