Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1751 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Winform Binding Controls OracleDataAdapter [Résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C#] Winform Binding Controls OracleDataAdapter [Résolu]

n°2175354
SplitForm
Moomnia !!!
Posté le 12-02-2013 à 12:30:57  profilanswer
 

Bonjour,
 
 
J'essaye sans succès de lier un control Text à un champ d'une table pour en modifier le contenu (et sauvegarder l'info en cliquant sur le bouton). Malheureusement, je dois m'y prendre mal, car ça ne fonctionne pas et je n'ai aucune idée de la raison pour laquelle cela ne marche pas.
 
Voici mon code :


        private OracleDataAdapter odaDataAdapterForm;
        private DataTable dtDataTableForm = new DataTable();
 
        public Form1()
        {
            InitializeComponent();
 
            odaDataAdapterForm = new OracleDataAdapter("SELECT * FROM TB_UTILISATEUR WHERE NOM='SplitForm'", "User ID=xxx;Password=xxx;Data Source=xxx" );
            odaDataAdapterForm.Fill(dtDataTableForm);
 
            textBox1.DataBindings.Add("Text", dtDataTableForm, "NOM" );
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            odaDataAdapterForm.Update(dtDataTableForm);
        }


 
J'ai essayé avec un DataSet et une DataTable, ça ne change rien. Je pensais qu'un simple Update du DataAdapter suffisait !

Message cité 1 fois
Message édité par SplitForm le 12-03-2013 à 16:29:07
mood
Publicité
Posté le 12-02-2013 à 12:30:57  profilanswer
 

n°2175356
alien cons​piracy
hardtrance addict
Posté le 12-02-2013 à 12:38:20  profilanswer
 

SplitForm a écrit :

Bonjour,
 
 
J'essaye sans succès de lier un control Text à un champ d'une table pour en modifier le contenu (et sauvegarder l'info en cliquant sur le bouton). Malheureusement, je dois m'y prendre mal, car ça ne fonctionne pas et je n'ai aucune idée de la raison pour laquelle cela ne marche pas.
 
Voici mon code :


        private OracleDataAdapter odaDataAdapterForm;
        private DataTable dtDataTableForm = new DataTable();
 
        public Form1()
        {
            InitializeComponent();
 
            odaDataAdapterForm = new OracleDataAdapter("SELECT * FROM TB_UTILISATEUR WHERE NOM='SplitForm'", "User ID=xxx;Password=xxx;Data Source=xxx" );
            odaDataAdapterForm.Fill(dtDataTableForm);
 
            textBox1.DataBindings.Add("Text", dtDataTableForm, "NOM" );
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            odaDataAdapterForm.Update(dtDataTableForm);
        }


 
J'ai essayé avec un DataSet et une DataTable, ça ne change rien. Je pensais qu'un simple Update du DataAdapter suffisait !

A vérifier mais l'objet DataTable n'a pas de notion d''enregistrement sélectionné (ie. Tu ne veux afficher qu'un seul nom dans ton textBox).  
 
Pour faire un binding avec les champs d'un enregistrement en base de données il faut utiliser un BindingSource qui va faire l'intermédiaire et enregistrer quel est l'enregistrement courant en plus de pouvoir naviguer entre les enregistrements, ajouté un nouveau, supprimer un enregistrement, ...

n°2175362
SplitForm
Moomnia !!!
Posté le 12-02-2013 à 13:27:28  profilanswer
 

Merci pour la réponse, j'ai trouvé une solution, je ne sais pas si c'est la meilleur, mais cela fonctionne  :jap:  
 
Du coup, je passe par un DataSet et un BindingSource, car l'écran est plus complexe que ce simple bout de code.
 
Split'
 


        private OracleDataAdapter odaDataAdapterForm;
        private DataSet dsDataSetForm = new DataSet();
        private BindingSource bsBindingSourceForm = new BindingSource();
 
        public Form1()
        {
            InitializeComponent();
 
            odaDataAdapterForm = new OracleDataAdapter("SELECT * FROM TB_UTILISATEUR WHERE NOM='SplitForm'", "User ID=xxx;Password=xxx;Data Source=xxx" );  
            odaDataAdapterForm.Fill(dsDataSetForm, "TB_UTILISATEUR" );
 
            bsBindingSourceForm.DataSource = dsDataSetForm.Tables["TB_UTILISATEUR"];
            textBox1.DataBindings.Add("Text", bsBindingSourceForm, "NOM" );
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            OracleCommandBuilder ocbCommandBuilder = new OracleCommandBuilder(odaDataAdapterForm);
 
            bsBindingSourceForm.EndEdit();
            odaDataAdapterForm.UpdateCommand = ocbCommandBuilder.GetUpdateCommand();
            odaDataAdapterForm.Update(dsDataSetForm, "TB_UTILISATEUR" );
        }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [C#] Winform Binding Controls OracleDataAdapter [Résolu]

 

Sujets relatifs
Programmation C Aides [Résolu][resolu] problème compilation programmes C sous Dev-C++
Chronométrer le temps d'exécution d'une fonction en C et à la µsRealiser un Menu en C
programmation C (Menu)[C# C++ JAVA] La programmation, un métier d'avenir ?
[C++] Templates et surcharges..Programmation C sous CodeBlocks
C++ liste chainée 
Plus de sujets relatifs à : [C#] Winform Binding Controls OracleDataAdapter [Résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR