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 :

Pb avec datasource et datamember quand les controles ne sont pas dans un datagrid


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Pb avec datasource et datamember quand les controles ne sont pas dans un datagrid
    Bonjour,
    je fais face depuis quelques jours à une erreur ArgumentException :
    "Impossible d'effectuer une liaison à la propriété ou la colonne Commentaire sur le DataSource. Nom du paramètre : dataMember"
    Je vous explique le contexte.

    J'ai une classe un Module
    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
     
    Public Class UnModule
        Private _EstReference As Boolean
        Private _GUIDModule As String
        Private _Commentaire As String
        Private _Identifier As String
        Public Property EstReference() As String
            Get
                Return _EstReference
            End Get
            Set(ByVal value As String)
                _EstReference = value
            End Set
        End Property
        Public Property GuidModule() As String
            Get
                Return _GUIDModule.ToString
            End Get
            Set(ByVal value As String)
                _GUIDModule = Guid.NewGuid().ToString
            End Set
        End Property
        Public Property Commentaire() As String
            Get
                Return _Commentaire.ToString
            End Get
            Set(ByVal value As String)
                _Commentaire = value
            End Set
        End Property
        Public Property Identifier() As String
            Get
                Return _Identifier
            End Get
            Set(ByVal value As String)
                _Identifier = value
            End Set
        End Property
    End Class
    J'ai déclaré cette classe comme objet base de donnée. Puis dans un Formulaire "Form2" j'ai fait glisser l'ensemble de ces "champs" sur le formulaire ce qui m'a automatiquement créé un BindingSource (UnModuleBindingSource) et un BindingNavigator (UnModuleBindingNavigator)

    J'alimente cette BindingSource par un dataset lui même alimenté par un fichier XML.

    Le code est le suivant :
    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
    Imports System
    Imports System.Xml
    Imports System.Data
    Imports DataSetWithXML.UnModule
     
    Public Class Form2
        Private Fichier As String
        Private Ds As New DataSet("MesModules")
     
        Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            UnModuleBindingSource.DataSource = recup("MesModules")
        End Sub
     
        Private Function recup(ByVal oFichier As String) As DataView
     
            Dim _XmlDoc As New XmlDocument
     
            'Chargement du fichier de données
            _XmlDoc.Load(oFichier + ".xml")
     
            'lecture du schéma XML par chacun des noeuds
            Dim Xnr = New XmlNodeReader(_XmlDoc)
            Ds.ReadXml(Xnr)
     
            Dim tables As DataTableCollection = Ds.Tables
            Dim view1 As New DataView(tables(0))
     
            Return view1
     
        End Function
     
        Private Sub UnModuleBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
            Ds.WriteXml("MesModules.xml")
        End Sub
     
    End Class
    Si je fais glisser sur le formulaire mes "champs" depuis l'objet source de données "UnModule" en tant que "DataGridView" je n'ai pas l'erreur par contre si je le fais en tant que "Détails" là cette erreur apparait.


    Précision : En supprimant la liaison du contrôle CommentaireTextBox au "champ" Commentaire de l'objet "UnModule" le formulaire se charge bien.

    Si par code je rajoute la liaison alors cela ne fonctionne plus !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Me.CommentaireTextBox.DataBindings.Add("text", UnModuleBindingSource, "Commentaire")
    Je ne sais pas du tout comment m'en sortir, j'ai déjà pas mal fouillé sur le net et sur les forums sans succès. Je précise que bien sûr j'ai absolument besoin d'avoir le mode détails.

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Ce serait pas simplement un problème de casse ? la propriété Text s'écrit avec une majuscule, toi tu as écrit "text". La casse n'a pas d'importance en VB.NET, mais pour le nom de la propriété dans le binding c'est important

  3. #3
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 777
    Points
    1 777
    Par défaut
    Bonjour.

    Avec text (sans T) cela doit marcher (test effectué à l'instant).

    Au vue du message d'erreur, j'aurai plutôt tendance à penser que la colonne Commentaire n'est pas trouvée dans la datasource.

    Peut-être en remplaçant Commentaire par UnModule.Commentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Me.CommentaireTextBox.DataBindings.Add("text", UnModuleBindingSource, "UnModule.Commentaire")
    Avec un coup de debug pour voir ce que contient la bindingsource, tu devrais dans tous les cas trouver le nom qui convient.

    Cdt.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/04/2015, 21h44
  2. Réponses: 10
    Dernier message: 06/08/2009, 19h33
  3. [CR 7] Erreur Tous Les Champs Ne Sont Pas Dans La Même Expression D'Index ?
    Par clementratel dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 23/01/2009, 13h39
  4. Réponses: 5
    Dernier message: 22/10/2008, 18h40
  5. les controles n'apparaissent pas dans la fenetre
    Par barrada dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 13/12/2007, 11h02

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