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

Windows Forms Discussion :

Propriété renvoyant un Type personnalisé et affichage DataGridView


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 37
    Points
    37
    Par défaut Propriété renvoyant un Type personnalisé et affichage DataGridView
    Bonjour,

    mon problème est le suivant :

    je voudrais afficher une liste de personnes dans une datagridview, pour cela j'utilise NHibernate et je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
            IList _Ilist;
            ISession _session ;
     
            _session = appMgr.getInstance.ISessionFactory.OpenSession();
     
             _Ilist = _session.CreateCriteria(typeof(Localites)).List();
     
             dataGridView1.DataSource = _Ilist;
    cela fonctionne très bien sauf pour une chose.

    en fait chaque personne a une propriété "idLocalité" qui en DB contient donc l'id de la localité du client, par contre au niveau de la classe ça contient un objet de type Localite, ce qui est très pratique au niveau du code mais par contre au niveau de l'affichage dans une datagridview c'est mauvais car je me retrouve avec le nom d'une classe ( MonAppli.Localite) au lieu d'un id ou bien d'un nom de localité (ce à quoi je voudrais arriver au final)

    Donc pour le moment j'ai un affichage du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    idClient     nom     Localite
    1            Michel  MonAppli.Localite
    2            Jean    MonAppli.Localite
    et je voudrais obtenir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    idClient     nom     Localite
    1            Michel  Paris
    2            Jean    Marseille

    Y a t'il une technique particulière pour faire ça ? (désolé si c'est une question débile, je débute )

    Je précise que j'ai cherché sur le forum et sur internet avant et aussi que je suis débutant en dotnet ET en NHibernate, si j'ai oublié des infos importantes dites le moi.

  2. #2
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Je ne suis pas sûr que NHibernate y soit pour quelque chose.

    Je ne suis pas un expert, mais voici quand même dans le désordre des idées à essayer au cas où... :

    • définir la propriété Localité comme propriété par défaut du type TLocalité (pas sûr que ça marche)
    • "overrider" la méthode ToString du type TLocalité (ça ça va marcher normalement mais c'est pas propre)
    • redéfinir la propriété DataGridViewColumn.DataPropertyName = "TLocalité.Localité" (solution idéale mais pas sûr que ça fonctionne)
    • créer la propriété Localité dans le type qui contient le type TLocalité
    • solution radicale : abandonner les Winforms et passer sous WPF (mon choix perso)
    (\ _ /)
    (='.'=)
    (")-(")

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    Bonjour et merci d'essayer de m'aider

    J'ai pu arriver au résultat voulu en surchargeant ToString() mais comme tu le dis toi meme c'est pas propre et c'est pas applicable à mon application en entier mais au moins j'ai vu qu'il était possible d'y arriver !

    -Pour ton conseil de propriété par défaut est-ce applicable au Framework.Net 2.0 ? si oui aurait tu un lien vers des explications là dessus ?

    -il faut encore que je fasse des essais sur les propriétés de la DAtaGridView.

    Quand à "solution radicale : abandonner les Winforms et passer sous WPF (mon choix perso) " WPF c'est bien WindowsPresentationFoundation ou qqchose comme ça ? ce n'est pas le nouveau "style" des fenêtres Vista ? je ne vois pas bien ce que ça changerai peux tu m'expliquer un peu (ou me filer un lien) ?

    (je ne mets pas le sujet en résolu vu que je n'ai pas encore trouvé de solution réellement applicable dans toute mon appli)

    merci pour tes idées en tout cas.

  4. #4
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    -Pour ton conseil de propriété par défaut est-ce applicable au Framework.Net 2.0 ? si oui aurait tu un lien vers des explications là dessus ?
    Bien sûr que c'est ok pour le fx 2. en VB.NET tu n'as qu'à ajouter le mot clé Default quant tu définis ta property dans ta classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Default Property Localité As String
    il faut encore que je fasse des essais sur les propriétés de la DAtaGridView.
    Lesquels ?

    WPF c'est bien WindowsPresentationFoundation ou qqchose comme ça ? ce n'est pas le nouveau "style" des fenêtres Vista ?
    Vi !

    je ne vois pas bien ce que ça changerai peux tu m'expliquer un peu (ou me filer un lien) ?
    tout simplement ce que je te propose d'essayer avec DataGridViewColumn.DataPropertyName (et qui fonctionne avec un BindingSource) est supporté partout dans le modèle de DataBinding WPF. A savoir que tu peux lier une propriété d'un contrôle à une propriété d'un objet en indiquant le chemin de cette propriété comme ceci MonClient.SaLocalité.NomLocalité.
    Alors qu'en WindowsForm c'est plus compliqué, la preuve, ton post est pas encore tagué [Résolu]
    (\ _ /)
    (='.'=)
    (")-(")

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2006
    Messages : 50
    Points : 37
    Points
    37
    Par défaut
    alors j'avais oublié de préciser, je fais ça en C# donc pour la propriété Default apparament c'est pas possible.

    pour WPF ça ne corresponds pas vraiment à ce que je recherche, en fait avec ce système de binding on peut, si je dis pas de bétise, définir très finement quel contrôle va afficher quoi, ma recherche à moi est plus centrée sur le problème datagrid/datasource/présentation , autrement dit je cherche justement à éviter de devoir coder un binding pour chaqune des colonnes de mon DataSource Tout en pouvant intervenir sur la présentation. (mais est ce possible ? j'en doute de plus en plus snif )

    (je me suis permis de créer un autre sujet décrivant de façon plus générale mon problème ici : http://www.developpez.net/forums/sho...23#post1674623 )

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/12/2007, 23h57
  2. Réponses: 6
    Dernier message: 14/02/2007, 14h42
  3. Réponses: 9
    Dernier message: 27/10/2005, 18h15
  4. Renvoyer un type structuré dans objet OLE
    Par Bleuarff dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 13/05/2005, 20h05
  5. [Composant] publier une propriété avec un type perso
    Par jpc34 dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/10/2004, 08h39

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