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 :

Attribut d'une propriété pour la voir dans les choix de datasources


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut Attribut d'une propriété pour la voir dans les choix de datasources
    Bonjour,

    Je recherche un attribut à mettre devant ma propriété qui me permettra de voir cette propriété comme un datasource en design.

    Par défaut, on voit toutes les propriétés de type List(of T) mais mon type pour cette propriété n'est pas une collection.

    J'espère être clair

    Merci,

    Pascal

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut bindable attribute
    bonjour passepoil
    Je pense que c'est plutot bindable=true
    Ensuite on peut la configurer dans source de donnees :
    ajouter une source de donnees ->objet-> selectionner le classe ->ok
    Generer....
    Ensuite tu prends un control quelconque de preference un dgv,un combox ou listbox.
    Tu fais:
    proprietes ->databinding->tag -> tu choisis ton datasource(classe1) et la propriete à lier.
    un composant Class1bindingSource apparait immediatement dans l'aire des composants du winform....genre dataset,datatable......
    Dialleurs on peut rendre le class en entier bindable(bi-dectionnnel).

    code exemple:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    'class entier bindindable
    Imports System.ComponentModel
     
    <bindable(True)> _
    Public Class Class1
     
    	Private m_prenom As String
    	Private m_nom As String
    	<Browsable(True)> _
    	Public Property Nom() As String
    		Get
    			Return m_nom
    		End Get
    		Set(ByVal value As String)
    			m_nom = value
    		End Set
    	End Property
    	<Browsable(True)> _
     Public Property Prenom() As String
    		Get
    			Return m_prenom
    		End Get
    		Set(ByVal value As String)
    			m_prenom = value
    		End Set
    	End Property
     
     
    End Class
    'class avec un seul property  bindindable
    Imports System.ComponentModel
     
    Public Class Class2
    	Private m_prenom As String
    	Private m_nom As String
    	Public Property Nom() As String
    		Get
    			Return m_nom
    		End Get
    		Set(ByVal value As String)
    			m_nom = value
    		End Set
    	End Property
    	<Bindable(True)> _
    	Public Property Prenom() As String
    		Get
    			Return m_prenom
    		End Get
    		Set(ByVal value As String)
    			m_prenom = value
    		End Set
    	End Property
    End Class
    avec un dgv on le voit immediatement dans le designer...........
    bon code..............

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut
    Merci MABROUKI pour ton aide mais je connaissais déjà tout ça.

    Je vais essayé de clarifier ma question.

    J'ai déjà créer un object Classe1BindingSource ayant évidemment DataSource = Classe1.

    Si, par exemple, j'avais, dans Classe1, une propriété (1 pour 1) de navigation liée à une autre classe. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Property Adresse as Adresse
    .

    Je sais que je peux créer un autre BindingSource
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AdresseBindingSource.DataSource = Classe1BindingSource
    AdresseBindingSource.DataMember = "Adresse"
    mais ça fait que je suis rendu à plus de 20 BindingSource et j'ai pas fini.

    Y a-t-il une façon de préciser le DataMember directement au contrôle sans passer par un BindingSource?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Controle.DataSource = Classe1BindingSource
    Controle.DataMember = "Adresse"

    Merci,

    Pascal

  4. #4
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut datamembre as string,datatable et dataset
    bonjour passepoil
    Je n'ai pas bien compris ta problematique mais tu peux t'inspirer de la methode du dataset et de sa collection de datables.
    En effet un dataset dispose d'un Ilist(of datable) de toutes les datables ajoutes au dataset(les tables etant en l'occurence ton Class1 ,Class2 etc...)
    De plus remarquons egalement que lorsque on code on peut ecrire:
    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
    18
    19
    20
    21
    22
    23
     
    	'liaison directe (soi-disant car en fait un bindingsource est cree en catimini
    		'(under the hood) ainsi que 
    		Dim ds As DataSet = New DataSet
    		Dim dt As DataTable = New DataTable
    		dt.TableName = "myDtatable"
    		ds.Tables.Add(dt)
     
    		Me.DataGridView1.DataSource = ds
    		Me.DataGridView1.DataMember = ds.Tables(0).TableName
     
    		'par bindingsource explicite
    		'
    		Dim bdsource As BindingSource = New BindingSource
    		bdsource.DataSource = ds
    		bdsource.DataMember = ds.Tables(0).TableName
    		'on peut ecrire concernant la structure de datable
    		Dim col As DataColumn = New DataColumn
    		col.Caption = "macolonne"
    		col.ColumnName = "perso"
    		col.DataType = GetType(String)
    		col.DefaultValue = Nothing
    		dt.Columns.Add(col)
    Donc un Dataset doit gerer une collection List(of datable) ou un List(of Class).
    De plus un type DataTable doit storer son -nom -TableName as string -et gerer sa propre List(Of DataColumn) -on le sait par la collection Columns de type DataColumnCollection ou le type DataTable store:ColumnName,DataType, DefaultValue etc...plus un meme un Caption(Label du champ).......ce que devrait faire ton Class1....savoir storer:
    -ton DataSet doit gerer une collection de Class1 avec leur nom de type.
    -Class1 doit lui-meme gerer une List - que j'appelerai "ColumnsOfClass1"- en fait c'est List(of MyProperty)
    -le type MyProperty storera luiropertyName, DataType, DefaultValue ....et meme PropertyCaption....
    En fait le BindingSource prends ses proprietes du DataSet qui est le vrai magasin ......
    On peut coder comme tu le sais tres bien ce qui suit sans incidence sur le resultat:
    bon code..............

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut
    Peut-être que c'est le type de ma propriété qui n'est pas supporté! (IQueryable(Of T))

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 102
    Points : 69
    Points
    69
    Par défaut
    Bon, en fin de compte, que la propriété (propriété de navigation ou une collection) soit dans la liste ou pas, un BindingSource doit être créé, manuellement ou automatiquement.

    La question qu'il reste à se poser: est-ce que je veux une longue liste de BindingSource en Design ou avoir du code??

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

Discussions similaires

  1. Attribution d'une propriété ou méthode
    Par kgb1917 dans le forum Access
    Réponses: 12
    Dernier message: 25/05/2007, 15h13
  2. recuperer la valeur d'une combobox pour la comparer dans une requête
    Par Rukawa dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/06/2006, 11h22
  3. [VB]Comment créer une propriété pour un activex
    Par darksantor dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 08/06/2006, 21h17
  4. [SGBD] Parser une variable pour mettre données dans bdd MySQL
    Par winnie82 dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/03/2006, 17h20
  5. Réponses: 7
    Dernier message: 08/01/2005, 13h24

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