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

Linq Discussion :

return données de class à Form


Sujet :

Linq

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 55
    Par défaut return données de class à Form
    Bonjour,

    Je souhaiterais utiliser une class pour récupéré une liste de clients:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public string afficheClients()
            {
     
                var clients = from ac in db.xdb_clients select new { lastName = ac.lastName, firstName = ac.firstName };
            }
    Mon seul soucis, c'est que je ne sais pas comment renvoyé les données de clients à ma Form1, puis affiches chaque clients dans une ligne d'un dataGridView...


    Je vous remercie de l'attention porté à mon message.

    cKmel

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    Ta requête LinQ créée un type anonyme dont tu ne connais pas le type. Il sera connu à la compilation dont la résultante est le code MSIL. Donc, tu ne peux pas faire comme cela. 2 alternatives s'offrent à toi, soit tu déclare une nouvelle classe contenant 2 propriétés (lastName et firstName). Si tu la nommes "Client", tu pourras écrire quelque chose comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public List<Client> afficheClients()
    {
           var clients = (from ac in db.xdb_clients select new Client { lastName = ac.lastName, firstName = ac.firstName }).ToList();
    }
    Pour afficher ensuite le résultat dans un datagrid, il suffit d'assigner la liste de clients à la propriété DataSource de ton contrôle.

    Sinon, en ne modifiant pas ta requête LinQ, tu peux mettre celle-ci dans la même fonction que l'instruction qui définit la propriété DataSource de ton DataGrid.

  3. #3
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Si un jour, tu désires vraiment retourner un type anonyme en valeur de retour d'une méthode, sache que c'est possible.

    J'y ais d'ailleurs consacré un billet sur mon blog sur le sujet : http://blog.developpez.com/jerome?ti...nyme_en_vale_3

  4. #4
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Joli trick ^^ Jerome. J'ai bien aimé l'inférence de type sur la fonction générique. Je retiendrai

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2008
    Messages : 55
    Par défaut
    Bonjour,

    je retourne un peu le problème, jvoudrais afficher mes données dans un dataGrid.

    voici actuellement mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                DataClasses1DataContext db = new DataClasses1DataContext();
     
                var clientAcheteurs = from p in db.xdb_clients select p.lastName + p.firstName + p.email + p.societe;
     
                gridStandard.DataSource = clientAcheteurs.ToList();
    Code qui n'affiche pas les données nom prénom email et société mais juste: "length = 22 et 25" ...chose qui m'împorte peu sur les 2 entré qu'il y a actuellement dans ma DB.


    Meilleure salutations

  6. #6
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Euh,

    Déjà, je pige pas bien le fait que cela te renvoie des longueurs de tes chaines ... Mais bon passons.

    Le fait d'additionner tes chaines de caractères ne m'a pas l'air génial, pourquoi n'utilise-tu pas ta 1ère proposition ? Le fait que tu aies mis dans la même fonction ta requête LinQ et l'affectation de la liste à la variable datasource de ton datagrid résout ton problême initial.

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

Discussions similaires

  1. [VB.Net] recuperer des données sous la forme 0001
    Par eown dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/05/2006, 12h32
  2. Récuperation des données envoyées par Form en POST
    Par bobatel dans le forum Langage
    Réponses: 9
    Dernier message: 26/04/2006, 14h59
  3. [Struts]control dans la class form
    Par jimi dans le forum Struts 1
    Réponses: 8
    Dernier message: 01/06/2005, 16h50
  4. Charger les données Excel avec Forms 9i
    Par Process Linux dans le forum Forms
    Réponses: 8
    Dernier message: 29/03/2005, 14h20
  5. Réponses: 12
    Dernier message: 01/07/2004, 11h03

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