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 :

Tri dans une gridview


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Tri dans une gridview
    J'ai une Gridview pour laqu'elle je souhaite trier par le Chiffre d'affaire.
    Mais lors du Databind , j'ai le message d'erreur :
    "La méthode System.Decimal get_chiffre_affaire ne prend pas en charge la traduction en SQL."

    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
    GridView_societes.DataSource = db.T30_Societes
                    .Where(s => s.ClePromoteur1 == (Master as prive).get_id_individu()
                                || s.ClePromoteur2 == (Master as prive).get_id_individu()
                          )
                    .Select(soc =>
                    new
                    {
                        ID_Societe = soc.ID_Societe,
                        NomSociete = soc.NomSociete,
                        Adr1 = soc.Adr1,
                        Adr2 = soc.Adr2,
                        Ville = soc.Ville,
                        CA = utils.montant_to_str(utils.get_chiffre_affaire(db, soc))
                    }
                    ).OrderByDescending(s => s.CA);
     
                GridView_societes.DataBind();
    Merci de votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Et si tu fais la même requête sans le select ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Le problème est essentiellement du au tri sur le CA. un orderby.NomSociete à la place du tri sur le CA fonctionne très bien.
    A mon sens il faudrait définir une instruction de tri sur le CA mais je ne sais pas comment faire simple.
    Si vous avez une idée, je suis preneur.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Ton CA correspond à quoi, à une classe personnalisé ???
    Si c'est le cas faut que tu crée une classe qui implémente IComparer et dans la méthode Compare de cette classe tu spécifie comment tu veux comparer tes objets.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    ce n'est pas une classe, c'est juste le résultat d'une requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            public static decimal get_chiffre_affaire(DataClasses_FormosDataContext db, T30_Societes societe)
            {
                // Vérifier s'il existe au moins une inscription pour faire le cumul
                var inscriptions = db.T06_Inscriptions.Where(i => i.cleSociete == societe.ID_Societe && i.dateAnnulation == null && ( i.flagReport == null ||  i.flagReport == false )).ToList();
     
                if (inscriptions.Count() > 0)
                {
                    return db.T06_Inscriptions.Where(i => i.cleSociete == societe.ID_Societe && i.dateAnnulation == null && (i.flagReport == null || i.flagReport == false)).Sum(s => s.prixvente);
                }
                else return ( decimal ) 0;
            }
    Je pensais qu'il y avait une solution plus simple pour juste trier une chaine de caractères

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    ton utils.montant_to_str ne fait que mettre une valeur décimal sous la forme d'un string ?
    Essaye ça:
    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
    var requete = db.T30_Societes
                    .Where(s => s.ClePromoteur1 == (Master as prive).get_id_individu()
                                || s.ClePromoteur2 == (Master as prive).get_id_individu()
                          )
                    .Select(soc =>
                    new
                    {
                        ID_Societe = soc.ID_Societe,
                        NomSociete = soc.NomSociete,
                        Adr1 = soc.Adr1,
                        Adr2 = soc.Adr2,
                        Ville = soc.Ville,
                        CA = utils.get_chiffre_affaire(db, soc)
                    }
                    ).ToList();
     
    GridView_societes.DataSource =requete.OrderByDescending(s => s.CA);

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    En effet, la fonction utils.montant_to_str ne sert qu'à mettre en forme le montant.
    Mais ta solution est bonne. L'idée de scinder la recherche d'informations et le tri est très pratique.
    Merci beaucoup

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Le faite de faire un tolist va exécuter la requête, ce qui fait que quand tu vas faire ton orderby dans ton CA tu aura une valeur décimale et pas l'appel de la méthode get_chiffre_affaire (c'est ce qui posait problème).

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 31
    Points
    31
    Par défaut
    Merci de ton aide

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

Discussions similaires

  1. [Acces] Tri dans une table
    Par badnane2 dans le forum Access
    Réponses: 3
    Dernier message: 01/08/2006, 23h34
  2. probleme de tri dans une base !
    Par lucke_34 dans le forum Access
    Réponses: 4
    Dernier message: 30/07/2006, 10h04
  3. [9i] Tri dans une chaine
    Par sygale dans le forum Oracle
    Réponses: 7
    Dernier message: 04/05/2006, 15h57
  4. Tri dans une recherche
    Par jojo57 dans le forum Access
    Réponses: 9
    Dernier message: 04/05/2006, 10h47
  5. Tri dans une DBGrid sur un champ date au format jj/mm
    Par Jeankiki dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/10/2004, 12h32

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