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 :

Quelle est la bonne collection ?


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 53
    Points : 32
    Points
    32
    Par défaut Quelle est la bonne collection ?
    Bonjour à tous,

    J'ai passé la journée à chercher une solution, mais je n'ai rien trouvé qui convenait.

    Sur une page web j'ai deux datagrid, le premier affiche le résultat d'une requête (recherche de fournisseur par leur nom).
    L'utilisateur peut cocher des éléments dans ce premier datagrid et cliquer sur un bouton pour les ajouter dans le 2ème datagrid:

    Je cherche la bonne collection pour alimenter le 2ème datagrid. Les actions sur cette collections sont :
    - Ajout de 1 à 50 éléments ( add(key/value) )
    - Vérification de l'existence avant ajout (Contains)
    - Suppression un par un des élément possible (Remove(Id))
    - Effacer entièrement la collection (Clear())
    - Doit être trier par nom de fournisseur

    J'utilisais au départ un HybridDictionnary, mais je ne peux pas le trier, et je n'ai rien trouvé de simple à la place ...

    Une idée ??

    Je travail avec VS.Net 2003 - Vb.Net 1.1

  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
    Citation Envoyé par plasticgoat Voir le message
    Je cherche la bonne collection pour alimenter le 2ème datagrid. Les actions sur cette collections sont :
    - Ajout de 1 à 50 éléments ( add(key/value) )
    - Vérification de l'existence avant ajout (Contains)
    - Suppression un par un des élément possible (Remove(Id))
    - Effacer entièrement la collection (Clear())
    - Doit être trier par nom de fournisseur

    La classe System.Collections.SortedList devrait faire l'affaire. C'est un dictionnaire dont les entrées sont triées selon la clé, et qui fait tout ce que tu demandes. Et c'est supporté en 1.1

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Oui, je l'ai essayé, ça paraissait parfait, mais le problème c'est que je dois trier par la valeur.

    Actuellement ma collection contient une paire (ID_Fournisseur, Nom_Fournisseur), car le nom n'est pas unique, mais je dois trier l'affichage par ordre alphabétique.
    Et d'après ce que j'ai vu ce n'est pas possible de trier une SortedList par valeur.

    Je continue de chercher

  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 : 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
    Je comprends pas bien ton problème en fait... pourquoi tu tiens absolument à utiliser un dictionnaire ?
    En plus, il ne faut pas mélanger l'organisation interne des données et leur représentation sur l'interface graphique : en interne, ça ne sert à rien que la collection soit triée, c'est à l'affichage que c'est nécessaire.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    Je suis d'accord que c'est uniquement l'affichage du datagrid que je dois trier

    J'ai choisi un dictionnaire pour pouvoir gérer mes paires identifiant/nom.
    En fait j'ai même besoin de gérer 3 valeurs en parallèle: identifiant/numero/nom
    Seul l'identifiant est unique, donc je ne peux pas m'en passer.
    Mon écran doit afficher les noms dans le datagrid et renvoyer la liste des numéros correspondants.
    L'identifiant est surtout essentiel pour supprimer le bon (et un seul) élément dans la liste (collection/datagrid)

    Pour le moment la solution que j'ai trouvé, c'est d'avoir deux collections (2 dictionnaires), un hybridDictionnary avec le couple ID/Num et une sortedList avec Nom/ID qui reste donc trier.

    Tu aurais une meilleure idée ? sans dictionnaire ?

  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 plasticgoat Voir le message
    J'ai choisi un dictionnaire pour pouvoir gérer mes paires identifiant/nom.
    En fait j'ai même besoin de gérer 3 valeurs en parallèle: identifiant/numero/nom
    Ben crée une classe Fournisseur, avec une propriété ID, une propriété Nom et une propriété Numéro...

    Citation Envoyé par plasticgoat Voir le message
    Seul l'identifiant est unique, donc je ne peux pas m'en passer.
    Mon écran doit afficher les noms dans le datagrid et renvoyer la liste des numéros correspondants.
    L'identifiant est surtout essentiel pour supprimer le bon (et un seul) élément dans la liste (collection/datagrid)
    Utilise une liste d'objets Fournisseur, et affecte la à la propriété DataSource du DataGrid

    Citation Envoyé par plasticgoat Voir le message
    Pour le moment la solution que j'ai trouvé, c'est d'avoir deux collections (2 dictionnaires), un hybridDictionnary avec le couple ID/Num et une sortedList avec Nom/ID qui reste donc trier.
    Oublie ça, ça va vite devenir ingérable si tu as besoin d'ajouter des champs. Crée une classe comme je te l'ai dit au début, pour regrouper les données d'un même fournisseur

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2005
    Messages : 53
    Points : 32
    Points
    32
    Par défaut
    En fait c'est un peu plus compliqué que ça (ou alors je me complique la vie )
    J'ai attaché une copie d'écran en pièce jointe.
    L'écran est censé être un écran de recherche générique (recherche de clients, de fournisseurs ...)

    Il y a déjà des classes pour toutes les entités de l'application, et elles sont utilisées (à travers une collection générique qui sert de datasource) pour afficher le résultat de la recherche dans le premier datagrid, celui du haut.

    Ensuite l'utilisateur sélectionne avec les cases à cocher quelques uns des résultats et les ajoute dans le datagrid du bas. On peut faire plusieurs recherches dans le datagrid du haut et ajouter quelques résultats à chaque fois dans le datagrid du bas (maximum 50).

    Et c'est donc pour gérer ce datagrid du bas que j'ai "besoin" de ces collections. Le datagrid du haut ne me renvoie pas de classe, mais seulement (ID, Num, Nom).
    Je parcours les éléments cochés dans le datagrid du haut et les ajoute à ma (mes) collections pour alimenter le datagrid du bas.

    J'espère que j'ai été assez clair

    Je n'ai pas trouver d'autres moyen d'alimenter mon datagrid du bas que par une collection.
    Images attachées Images attachées  

  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
    Citation Envoyé par plasticgoat Voir le message
    Et c'est donc pour gérer ce datagrid du bas que j'ai "besoin" de ces collections. Le datagrid du haut ne me renvoie pas de classe, mais seulement (ID, Num, Nom).
    Je parcours les éléments cochés dans le datagrid du haut et les ajoute à ma (mes) collections pour alimenter le datagrid du bas.
    Ben pourquoi tu ajoutes pas à ta collection les objets Fournisseur dont les id sont sélectionnés dans la grille du haut ? Perso c'est comme ça que j'aurais fait... ou alors j'ai toujours pas compris ce qui te pose problème

Discussions similaires

  1. Quelle est la bonne prononciation de 'GNOME'
    Par sovo dans le forum Gnome
    Réponses: 8
    Dernier message: 20/04/2018, 14h08
  2. RegExp quelle est la bonne écriture ?
    Par olbouss dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 05/10/2009, 17h04
  3. Réponses: 11
    Dernier message: 27/05/2009, 10h19
  4. Réponses: 2
    Dernier message: 14/03/2008, 09h57
  5. [c# 2.0]TryParseExact Quelle est la bonne syntaxe ?
    Par Pierre8r dans le forum Windows Forms
    Réponses: 2
    Dernier message: 25/05/2006, 19h34

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