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

VB.NET Discussion :

Specifier le DataMember par defaut d'une Class


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut Specifier le DataMember par defaut d'une Class
    Bonjour,

    J'essai de creer une class 'Foo' dont la propriété 'P1' peut etre utilisée comme datasource d'une DataGridView, mais je voudrais pouvoir utiliser la syntaxe DataGridView.DataSource = Foo1 et ne pas avoir a specifier DataGridView.DataSource = Foo1.P1

    Les DataTables sont un exemple de ce que j'essai de faire: On peut utiliser les deux syntaxes: DataGridView.DataSource = DataTable1 ou DataGridView.DataSource = DataTable1.DefaultView et on obtient le meme resultat.

    Est ce qu'il y a un attribut a utiliser sur la propriété P1 ou sur la class Foo pour specifier que P1 est le "DataMember"?

    Merci de votre aide,
    Z

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pas sûr que ca fonctionne dans ce cas aussi, mais beaucoup de controle quand on leur donne une instance de classe et pas d'autres infos (genre displaymember) utilisent .ToString pour savoir quoi afficher

    il suffit donc d'overrider ToString pour return ce qu'on veut
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    hum, pas bête, malheureusement vbnet ne me laisse pas retourner une list à la place d'un String dans l'override de ToString.

    Et je suis pas sur qu'overrider ToString pour retourner autre chose qu'un String se soit révélé judicieux pour le reste de l'application...

    Je n'arrive pas a trouver la recherche adequate sur Google ou MSDN pour ne pas tomber sur les questions classiques concernant "DataMember" et "Binding".

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tu dois avoir un list(of foo1) c'est lui qu'il faudrait passer en datasource quand même

    le tostring ne servirait qu'à l'affichage, pas à du binding

    après rien ne t'empêche de faire une classe ou une interface ou un attribut permettant de spécifier le datamember et une méthode permettant de donner une collection à dgv en lui précisant le datamember en recherchant le datamember selon la classe, l'interface ou l'attribut que tu auras fait
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    non non j'ai pas de list(of foo): la class foo a une propriétés de type list(of object) disons foo.list et je voudrais que datagridview1.datasource = foo equivale à datagridview1.datasource = foo.list.

    Je me demande simplement comment c'est possible étant donné que ca marche pour les datatable avec datatable.defaultview (meme si defaultview n'est pas une liste, le principe est là)

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par zebrette Voir le message
    je voudrais que datagridview1.datasource = foo equivale à datagridview1.datasource = foo.list
    (...)
    ca marche pour les datatable avec datatable.defaultview
    oui mais rien à voir
    le dgv accepte plusieurs choses en entrée, en testant l'interface implémentée surement
    on peut donc lui donner un datatable, un dataview un list(of ) et plein d'autres trucs

    le datatable est un objet qui contient les données donc il peut afficher, .defaultview retourne un dataview sur les données du datatable donc ca peut retrouver les données

    par contre une classe qui ne contient pas de données il ne pourra rien en faire (en l'occurrence c'est une propriété de ton instance qui contient les données)


    j'ai à peu compris ce que tu voulais faire, reste à savoir pourquoi tu veux pouvoir écrire ca
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2010
    Messages
    132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Australie

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2010
    Messages : 132
    Points : 166
    Points
    166
    Par défaut
    e dgv accepte plusieurs choses en entrée...le datatable est un objet qui contient les données donc il peut afficher
    Certes, mais il n'en demeure pas moins qu'utiliser la datatable directement ou la datatable.defaultview comme datasource revient au même (ou alors c'est là que j'ai raté un truc...).


    reste à savoir pourquoi tu veux pouvoir écrire ca
    Par curiosité, comprendre comment le binding de la datatable fonctionne; je me demandais si je pouvais creer une classe avec une propriété datatable et utiliser la classe comme datasource pour une datagridview directement.

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    le dgv esst codé en .net
    il a été fait pour certaines choses et de peux pas en faire d'autres ...
    on peut imaginer que quand on lui donne un datasource il fait
    if typeof value is datatable then ...
    elseif typeofvalue is dataview then ...

    après tu dois pouvoir hériter de datatable, dataview .... ou implémenter une interface qu'il connait

    il doit y avoir plus d'infos sur ce qu'il accepte et ce qu'il en fait sur msdn/datasource
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Valeur par defaut d'une liste deroulante
    Par jpdar dans le forum IHM
    Réponses: 20
    Dernier message: 10/06/2016, 16h02
  2. Créer une fenêtre avec la couleur par defaut d'une dialog
    Par NicolasJolet dans le forum Windows
    Réponses: 2
    Dernier message: 03/08/2006, 16h01
  3. Réponses: 2
    Dernier message: 08/06/2006, 14h38
  4. Réponses: 1
    Dernier message: 14/05/2006, 11h50
  5. Mettre une date par defaut dans une textBox.
    Par yaumme dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/12/2005, 22h39

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