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

Windows Forms Discussion :

Textbox et data


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut Textbox et data
    Bonjour à tous,

    Depuis un ou deux mois, je me suis mis en tête d'essayer de développer un application en C#. J'ai déjà lu pas mal de tutoriaux à ce sujet et ai commencé ma petite programmation.

    Je me permets de vous soumettre un problème auquel je ne trouve pas de solution depuis depuis deux semaines.

    En gros, j'ai creé un MDIForm dans lequel j'ai placé un databindingnavigator et deux usercontrol de ma conception.

    Le premier usercontol me permet d'afficher les données d'identités de personnes. Je navigue dans mes données grâce à mon databindingnavigator. Longues heures de recherches déjà.

    Mon deuxième usercontrol est censé affiché des infos liées à l'uitlisateur afficher dans le premier.

    Pour l'instant, quand je démarre mon application, j'ai d'entrée de jeu l'identité mon premier 'client' qui s'affiche dans mon premier usercontrol et les détails ci rapportant dans mon deuxième usercontrol. Si je passe sur le 'client' suivant, les deux usercontrol se mettent à jour correctement.

    Mon problème, c'est que si je passe à un troisième client pour lequel je n'ai qu'une fiche d'identité mais pas de détails liés, le premier usercontrol affiche bien l'identité mais le deuxième usercontrol affiche les détails du deuxème client. Je souhaiterais qu'il n'affiche rien.

    Voici un bout de code utilisé pour passer d'un 'client à l'autre placer sur le form parent.

    private void bindingNavigatorMoveNextItem_Click(Object sender, EventArgs e)
    {
    identite1.bs_clients.MoveNext();
    serviceExterieur1.bs_PersCont.MoveNext();

    }

    Si une bonne âme pense pouvoir m'aider....

  2. #2
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Personne pour m'aider ? Je tourne vraiment en rond avec ce problème.

    Peut-être avec plus de précision...

    J'ai deux table et un seul dataset. Table 1 nommée "Client" et table 2 nommée "PerCont".

    Ce que je voudrais c'est que quand je clil sur mon boutton 'suivant' de mon bindingnavigator, c'est que le programme regarde dans la table 2 s'il y a une personne de contact reprise pour le mouveau client affiché et si oui, qu'il l'affiche les détails de cette personne de contact dans les divers textbox prévu à cet effet dans le deuxième usercontrol.

    J'ai essayé avec des currencymanager, mais rien ne change.

    Etant prafait débutant, soit je les utilisent mal, soit je n'ai rien compris à leur utilité et ne doit pas m'en servir.

    voici ce que j'ai pour l'instant:
    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
    private void MDIParent1_Load(object sender, EventArgs e)
            {
     
                // Spécifie le CurrencyManager pour la table Client
                ClientID = (CurrencyManager)this.BindingContext[gDSDataSet.Tables["Clients"]];
               ClientID.Position = 0;
     
                // TODO*: cette ligne de code charge les données dans la table 'gDSDataSet.Clients'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
                identite1.ta_clients.Fill(this.gDSDataSet.Clients);
                serviceExterieur1.ta_PersCont.Fill(this.gDSDataSet.PersCont);
            }
     
            private void bindingNavigatorMoveNextItem_Click(Object sender, EventArgs e)
            {
                if (ClientID.Position < ClientID.Count)
                {
                    identite1.bs_clients.MoveNext();
                }     
     
            }
    Si quelqu'un pouvait m'aider...

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    S'il y a une relation entre tes deux tables dans le dataset, il suffit de binder ton deuxième usercontrol sur la relation ajoutée dans la table parent (celle bindée sur le premier usercontrol).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    merci pour ta réponse plus que rapide.

    Je pense avoir compris ta réponse et j'ai donc effectué le changement proposé.

    J'ai effectivement dans l'arborescence de mon dataset ma table client qui apparait avec ses divers champs et également sous cette table ma table PersCont avec ses champs également.

    J'ai donc pointé un textbox de mon deuxième usercontrol sur le champs "nom" de cette 'sous table' PersCont.

    Mais j'ai une erreur avec le code suivant avec ma parenthèse vide de MDIParent1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MDIParent1());
            }
    Je pensait avoir vu lors de mes multiples recherches qu'il était possible d'y indiquer le nom du dataset. Je l'ai fait mais il ne l'accèpte pas. Sans doute ma mémoire me fait-elle défaut.

    Une idée...

    Dur dur le boulot de Rédacteur/Modérateur je suppose

    En tout cas merci à toi

  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Je n'ai pas saisi le rapport entre le binding de ta fenêtre et le code que tu viens de poster.
    Peux tu préciser le problème ? Exception à l'exécution ? Erreur de compilation ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 17
    Par défaut
    Pour résumer:

    1 MDIPARENT Form contenant
    1 databindingNavigator
    1 UserControl 'Identité' avec divers textbox
    1 UserControl 'ServExt' avec divers textbox

    Le databindingNavigator me permet de naviguer dans mes identités de ma table Identité.

    J'aimerais que cette naviguation me permette également d'afficher les coordonnées d'une personne de contact qui est liée à la personne en cours d'affichage dans le usercontrol Identité. Si aucune personne de contact n'est attribuée à l'identité en cours d'affichage, il faudrait qu'il vide les textbox du usercontrol n°2 qui pour l'instant reste complété avec les infos de l'identité précédente.

    Suite à ta suggestion, l'erreur affichée est la suivante:

    "Impossible d'effectuer une liaison à la propriété ou la colonne PrenomPersCont sur le DataSource.
    Nom du paramètre : dataMember"

    Celle-ci survient sur le fichier program.cs auto-généré par visual studio express 2008 lors de la création de mon projet.

Discussions similaires

  1. mise a jour d'une data base apartir d'un textbox
    Par mark. dans le forum ADO.NET
    Réponses: 1
    Dernier message: 28/05/2014, 13h20
  2. [Débutant] Data binding - Pour lier une textbox à une propriété.
    Par Gualino dans le forum VB.NET
    Réponses: 15
    Dernier message: 10/09/2011, 17h13
  3. Réponses: 3
    Dernier message: 04/08/2010, 14h05
  4. Comment vérifié le data type entré dans une TextBox
    Par totobraecky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/01/2010, 14h08

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