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 :

Modifier dynamiquement un BindingSource


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut Modifier dynamiquement un BindingSource
    Bonjour,
    Suis débutant en vb net et en informatique, aussi soyez indulgent.
    Ma question:
    Je crée une nouvelle instance d'un form de la maniére suivante:
    Dim NomDuForm as string
    NomDuForm="Civilités" ' Nom de la table access contenant les infos à afficher sur le form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim t As New Form1(Form.ActiveForm)
                        t.Name = NomDuForm
                        t.Text = NomDuForm
                        t.MdiParent = Principal
                        t.Show()
                        t.Focus()
    dans le nouveau form, la procédure de chargement est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     Me.TableAdapter1.Fill(Me.DonnéesDataSet.Tables(Me.Text))
            Me.BindingSource1.DataSource = Me.DonnéesDataSet
            Me.BindingSource1.DataMember = Me.Text
    end sub
    Mais, le bindingsource n'est pas mis à jour.
    Merci de votre réponse. Le code plus détaillé est joint dans code.txt
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Hello, t'as essayé de rajouter un DataBind ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     Me.TableAdapter1.Fill(Me.DonnéesDataSet.Tables(Me.Text))
            Me.BindingSource1.DataSource = Me.DonnéesDataSet
            Me.BindingSource1.DataMember = Me.Text
            Me.BindingSource1.DataBind()
    end sub

  3. #3
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut
    Merci de ta réponse mais erreur:
    DataBind n'est pas un membre de system.windows.form.bindigsource

    souligné en bleu dans le code

  4. #4
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    oups, désolée... j'aurais du faire plus attention...
    mais tu dis "n'est pas mis à jour", c'est à dire ??? Qu'est-ce qu'il est sensé faire ?

  5. #5
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut
    En faitchaque instance du form1 doit pouvoir etre utilisée pour gérer une table access (civilités, mode de réglement, condition de réglement, Etc..).
    A noter toutes ces tables ont la meme structure.

    Ceci afin de ne pas créer un form pour chaque table.

    Merci de t'interesser à mon probleme

  6. #6
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut
    AU SECOURS (!) Personne pour m'aider ?

  7. #7
    Membre chevronné

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 244
    Par défaut
    Hello,
    J'ai un peu regardé mais j'ai pas l'impression que tu pars dans la bonne direction. Malheureusement je ne peux pas beaucoup d'aider (je suis plus axée web et je n'ai pas de version WebForms de Visual Studio chez moi ).
    Mais de ce que j'ai pu voir, le BindingSource permet d' "encapsuler la source de données pour un formulaire", ça ne permet pas d'afficher les données, pour cela il faut l'utiliser après avec d'autres composants.
    cf http://msdn.microsoft.com/fr-fr/libr...ingsource.aspx

  8. #8
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut
    Merci pour ta réponse.
    Aprés des heures de recherches infructueuses, j'ai trouvé une solution:
    Plus de bindingsource sur mon form mais, dans la procedure load de mon form, je passe par une instruction sql:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim x, StrSql, NbEnr
     
            StrSql = "SELECT * FROM [" & Me.Text & "] ORDER BY ID"
            ExtraitDonnéesDuneTable(StrSql, Me.Text) 'Extraction des données de la table
            NbEnr = TableContientEnregistrement(Me.Text) 'nombre de rows dans la table
            For x = 0 To NbEnr - 1
                If ExtraitEnregistrements(Me.Text, x, "ID") = IDEncours Then Exit For
            Next
            Me.ID.Text = ExtraitEnregistrements(Me.Text, x, "ID")
            Me.Nom.Text = ExtraitEnregistrements(Me.Text, x, "NOM")

  9. #9
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour aleray...

    Le bindingsource fonctionne "perfectly" a condition que ce soit une instance commune(partagee) declare dans le form mdi parent (principal)....

    voici un exemple avec en plus un statuslabel qui ecoute les events (itemsAdded,ItemsRemoved) car c'est le bindingsource qui notifie tous les controls des changements intervenus dans la source de donnees(dataset)....

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    'fenetre mdi
    'dropper :
    ' un binding source
    ' un ToolStripStatusLabel
    Public Class Principal
     
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Me.WindowState = FormWindowState.Maximized
            Me.IsMdiContainer = True
            Me.MenuItemWindow.MdiList = True
     
        End Sub
     
        Private Sub MenuItemNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemNew.Click
            'le nom de form doit differer d'un form child à l'autre 
            'car on peut creer plusieurs childs differents
            Dim NomDuForm As String = "Civilites"
            'les dfferents childs acceder à une meme table (Personnel dans la bd Personnel.mdb) 
            Dim NomTable As String = "Personnel1"
     
            Dim t As New Form1()
            t.Name = NomDuForm
            t.Text = NomTable
            t.MdiParent = Me
            t.Show()
            t.Focus()
        End Sub
     
     
     
        Private Sub MenuItemClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemClose.Click
            Me.ActiveMdiChild.Close()
        End Sub
        Private Sub BindingSource1_ListChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ListChangedEventArgs) Handles BindingSource1.ListChanged
            Me.ToolStripStatusLabel1.Text = e.ListChangedType.ToString()
     
        End Sub
     
        Private Sub MenuItemHorizontal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemHorizontal.Click
            Me.LayoutMdi(MdiLayout.TileHorizontal)
        End Sub
    End Class
     
    'fenetre child
    'dropper :
    '  le composant datset PersonnelDataSet1
    '  le composant Personnel1TableAdapter1
    '  qui represente la bd Personnel.mdb
    Public Class Form1
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
        End Sub
     
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.Personnel1TableAdapter1.Fill(Me.PersonnelDataSet1.Tables(Me.Text))
     
            Principal.BindingSource1.RaiseListChangedEvents = True
            Principal.BindingSource1.DataSource = Me.PersonnelDataSet1
            Principal.BindingSource1.DataMember = Me.Text
            Me.DataGridView1.DataSource = Principal.BindingSource1
        End Sub
     
     
     
     
    End Class
    Bon Code....

  10. #10
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut
    Merci de ta réponse mais erreur suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Me.Personnel1TableAdapter1.Fill(Me.PersonnelDataSet1.Tables(Me.Text))
    Impossible d'effectuer un cast d'un objet de type 'Types_CivilitésDataTable' en type 'Types_Conditions_de_réglementDataTable'

  11. #11
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    Bonjour aleray...

    Bon on est oblige de jouer au devinettes avec les debutants.
    Ce que tu as fait comme erreur c'est de vouloir avec la meme instance de "Form1" ouvrir la table 'Types_CivilitésDataTable' et egalement la table 'Types_Conditions_de_réglementDataTable' avec le meme TableAdapter..


    Ceci n'est pas possible ,il te faut 2 forms childs different tel que tu veux le faire.. et 2 TableAdapters un pour chaque table ..differente...
    Le code repris:
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    'fenetre mdi
    Public Class Principal
     
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            Me.WindowState = FormWindowState.Maximized
            Me.IsMdiContainer = True
            Me.MenuItemWindow.MdiList = True
     
        End Sub
     
        Private Sub MenuItemNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemNew.Click
     
            'le child form1
            Dim NomDuForm As String = "Civilites"
            Dim NomTable As String = "Personnel1"
     
            Dim t As New Form1()
            t.Name = NomDuForm
            t.Text = NomTable
            t.MdiParent = Me
            t.Show()
            t.Focus()
     
            ' PAR ICI L'AJOUT :le child form2
     
            NomDuForm = "Reglementation"
            NomTable = "Personnel3"
     
            Dim t2 = New Form2()
            t2.Name = NomDuForm
            t2.Text = NomTable
            t2.MdiParent = Me
            t2.Show()
            t2.Focus()
        End Sub
     
     
     
        Private Sub MenuItemClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemClose.Click
            Me.ActiveMdiChild.Close()
        End Sub
        Private Sub BindingSource1_ListChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ListChangedEventArgs) Handles BindingSource1.ListChanged
            Me.ToolStripStatusLabel1.Text = e.ListChangedType.ToString()
     
        End Sub
     
        Private Sub MenuItemHorizontal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItemHorizontal.Click
            Me.LayoutMdi(MdiLayout.TileHorizontal)
        End Sub
    End Class
    'fenetre child 1 sans changement
     
    Public Class Form1
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
     
        End Sub
     
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            Me.Personnel1TableAdapter1.Fill(Me.PersonnelDataSet1.Tables(Me.Text))
     
            Principal.BindingSource1.RaiseListChangedEvents = True
            Principal.BindingSource1.DataSource = Me.PersonnelDataSet1
            Principal.BindingSource1.DataMember = Me.Text
            Me.DataGridView1.DataSource = Principal.BindingSource1
        End Sub
     
     
     
     
    End Class
     
    'fenetre child 2
    'dropper :
    '  le composant datset PersonnelDataSet1
    '  le composant Personnel3TableAdapter1
     
    Public Class Form2
     
        Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            'PAR LA  DIFF:Personnel3TableAdapter1(note personnel3)
     
            Me.Personnel3TableAdapter1.Fill(Me.PersonnelDataSet1.Tables(Me.Text))
     
            Principal.BindingSource1.RaiseListChangedEvents = True
            Principal.BindingSource1.DataSource = Me.PersonnelDataSet1
            Principal.BindingSource1.DataMember = Me.Text
            Me.DataGridView1.DataSource = Principal.BindingSource1
        End Sub
    End Class
    bon code................

  12. #12
    Membre averti
    Homme Profil pro
    retraité
    Inscrit en
    Août 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Août 2012
    Messages : 17
    Par défaut
    Merci de t'etre interessé à mon probleme.
    Mon but était justement de ne pas créer un formulaire pour chaque table, car j'ai une 10 de tables différentes avec la meme structure (civilités, type de tiers, mode de réglement, conditions de réglement, etc).
    Si je doit faire un new form1, new form2, new form 3, etc.., alors autant créer 1 form par table FrmCivilité, FrmTypeTiers,Etc..

    Je pense etre dans le vrai (?).
    Comme dit précédemment, j'ai contourné le probleme en supprimant le bindingsource et le dataset et je passe par des instruction SQL pour remplir les champs de la nouvelle instance du form1.

    Encore merci de ta réponse.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2005, 09h52
  2. Modifier dynamiquement le style d'un textarea
    Par AlLutun dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2004, 15h18
  3. Réponses: 7
    Dernier message: 25/10/2004, 10h59
  4. [Applet] Modifier dynamiquement la mise en page
    Par Amnesiak dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 28/09/2004, 11h49
  5. VertexBuffer d'un Mesh modifiable dynamiquement ?
    Par Imhotep dans le forum DirectX
    Réponses: 7
    Dernier message: 10/07/2004, 15h23

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