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

Winform Binding Controls OracleDataAdapter [Résolu] [C#] - C#/.NET managed - Programmation

Marsh Posté le 12-02-2013 à 12:30:57    

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
Reply

Marsh Posté le 12-02-2013 à 12:30:57   

Reply

Marsh Posté le 12-02-2013 à 12:38:20    

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, ...

Reply

Marsh Posté le 12-02-2013 à 13:27:28    

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" );
        }

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed