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 :

DataBindingContext et ajout d'une ligne DataSet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut DataBindingContext et ajout d'une ligne DataSet
    Bonsoir à toutes et tous !

    Je crée actuellement un formulaire qui permet de visualiser un listing clients par liaison simple grâce au DataBinding. Aucun problème pour l'affichage et le passage d'un client à l'autre mais voilà ce que je voudrais faire et qui bien évidement ne fonctionne pas.

    J'ai ajouté un bouton "Nouveau client", et j'aimerais voir un formulaire vierge apparaître à la dernière position + 1 afin d'entrer de nouvelles données pour un nouveau client. Pour ce faire, lors de l'ajout je crée une nouvelle ligne dans la table du DataSet que je pré-remplis avec des données standards et je demande au DataBindingContext de se rendre à la nouvelle position. La ligne de la table est bien créée puisque un client supplémentaire apparaît quand j'affiche client xxx sur xxx. En "montant" unité par unité, j'arrive toujours à n-1 mais jamais à la dernière ligne nouvellement créée.

    Y a-t-il une astuce que je n'aurais pas trouvée ?

    Merci d'avance pour vos réponses !

    webrider

  2. #2
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Une portion de code pourrait nous aider
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2012
    Messages : 337
    Par défaut
    Bonsoir,

    Si votre soucis est que vous ne voyez pas le nouveau client dans votre DataGridView après l'avoir créé, il vous faut réaffecter le DataSource du DataGridView en fessant appel à la méthode .Fill du DataAdapter concerné lors de la fermeture du formulaire de saisie.

    Dis autrement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MonDataAdapter.Fill(MaDataTable)
    MonDataGridView.DataSource=MaDataTable
    L'idée reste la même pour un DataSet ou un BindingSource.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour et merci pour vos réponses.

    Je me suis mal exprimé, je n'utilise pas un DataGridView mais un formulaire personnel (voir pièces jointes).

    Voici le code qui ajoute une ligne au 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
    Private Sub NouveauToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NouveauToolStripMenuItem.Click
            Try
                With Me.BindingContext(XXXDataset, "Clients")
                    Dim LigneVierge As DataRow = XXXDataset.Tables("Clients").NewRow ' Création d'une nouvelle ligne dans la table clients
                    Dim NumDernierClient As Integer = XXXDataset.Tables("Clients").Rows(.Count - 1).Item(0) ' Récupération du numéro de client du dernier client pour la clé primaire
                    With LigneVierge
                        .Item(0) = NumDernierClient + 1
                        .Item(1) = "Mr."
                        .Item(2) = "Nom"
                        .Item(3) = "Prénom"
                        .Item(4) = "Rue & numéro"
                        .Item(6) = "1000"
                        .Item(7) = "Bruxelles"
                    End With
                    XXXDataset.Tables("Clients").Rows.Add(LigneVierge)
                    .Position = .Count - 1
                    lblNbreClients.Text = "Client " & .Position + 1 & " sur " & .Count
                    CreateBindingContext()
                End With
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
    Sur la première miniature on voit bien qu'il y a 3 clients au total et grâce aux boutons je sais passer au client 1/3, 2/3 puis 3/3. Une fois l'ajout demandé, j'ai bien l'affichage client 3/4 mais quand je clique sur le bouton pour passer à 4/4 ça reste bloqué sur 3/4.

    Merci.

    webrider
    Images attachées Images attachées   

  5. #5
    Membre Expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Par défaut
    Je vois rien d'anomal dans votre code. J'aurais eu tendance à dire qu'il manquait un AcceptChange sur la table, mais je pense que cette fonction doit être appelée après l'Update sur le DataSet pour sauver les données dans la base de données.

    Il faudrait peut-être voir au niveau du code de votre bouton "Suivant".

    Sinon vous pouvez regarder du coté du composant "BindingNavigator" qui crée en bas de votre fenêtre (ou au dessus) le même genre de barre de navigation que sous Access
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  6. #6
    Invité
    Invité(e)
    Par défaut
    Oui c'est étrange surtout qu'il n'y a aucune exception qui est levée et je peux récupérer les informations du nouveau client via le code directement dans le DataSet.

    Pour info voici le code des boutons :
    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
    Private Sub btnDebut_Click(sender As Object, e As EventArgs) Handles btnDebut.Click, btnPrecedent.Click, btnSuivant.Click, btnFin.Click
            Try
                With Me.BindingContext(XXXDataset, "Clients")
                    If sender.Equals(btnDebut) Then
                        .Position = 0
                    ElseIf sender.Equals(btnPrecedent) Then
                        .Position -= 1
                    ElseIf sender.Equals(btnSuivant) Then
                        .Position += 1
                    ElseIf sender.Equals(btnFin) Then
                        .Position = .Count - 1
                    End If
                    lblNbreClients.Text = "Client " & .Position + 1 & " sur " & .Count
                End With
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
    De plus le BindingContext m'informe bien qu'il y a 4 lignes dans le DataSet puisqu'il met bien à jour le nombre total de clients. Une fois ma ligne ajoutée au DataSet devrais-je d'abord sauvegarder dans la base de données puis recharger mon DataSet ?

    Je sèche complètement là.

    webrider

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

Discussions similaires

  1. dataset ajout d'une ligne pariculiere
    Par clouddd dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/10/2009, 15h22
  2. [Dataset] Ajout d'une ligne à la fin d'un dataset
    Par joeln3 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/07/2007, 14h37
  3. [AbstractTableModel] ajout d'une ligne
    Par b_52globemaster dans le forum Composants
    Réponses: 7
    Dernier message: 29/07/2005, 14h09
  4. [debutant] [JTable] ajout d'une ligne
    Par lanfeustdetroll dans le forum Composants
    Réponses: 1
    Dernier message: 29/06/2005, 19h19
  5. [C#] Ajout d'une ligne dans un dataset
    Par frechy dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/12/2004, 10h35

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