Afficher saisie textbox dans datagridview

Signaler
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011
-
Messages postés
12
Date d'inscription
mercredi 5 mars 2014
Statut
Membre
Dernière intervention
6 mai 2014
-
Bonjour, alors, j'ai actuellement du mal avec ma DataGridView

Lorsque je fini de taper ma saisie et que j'appuie sur mon bouton pour afficher dans ma DataGridView j'ai une erreur de ce type :

" Impossible d'ajouter par programmation des lignes à la collection de lignes DataGridView lorsque le contrôle est lié aux données."

Voici mon code :/ :

 public Form1()
        {
            InitializeComponent();
            mesDonnees = new DataSet();
            DataTable mesInfos = new DataTable("Mes Données");
            DataColumn Date = new DataColumn("Date");
            DataColumn Libelle = new DataColumn("Libelle");
            DataColumn Montant = new DataColumn("Montant");
            DataColumn Categorie = new DataColumn("Categorie");

            mesInfos.Columns.Add(Date);
            mesInfos.Columns.Add(Libelle);
            mesInfos.Columns.Add(Montant);
            mesInfos.Columns.Add(Categorie);
            mesDonnees.Tables.Add(mesInfos);

            dataGridView1.DataSource = mesDonnees;
            dataGridView1.DataMember = "Mes Données";
        }


private void button1_Click(object sender, EventArgs e) // Action du bouton Ajouter //
        {            
                    dataGridView1.Rows.Add(this.maskedTextBox1.Text, this.textBoxLibelle.Text, this.maskedTextBox2.Text, this.textBoxCategorie.Text);

                }


Le but par la suite et de pouvoir enregistrer et réouvrir ce que j'ai saisie.
La fonction pour enregistrer et ouvrir marche déjà :)

Merci à vous :)

18 réponses

Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Désolé du second post, mais je relance ^^'
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
Bonsoir

le message d'erreur te donne la solution.
Ton datagridview est liée à ta table de donnée.

Donc soit tu le configures pour écrire dedans une nouvelle ligne (autoriser l'ajout dans le menu qui s'ouvre avec la petite flèche en haut à droite du contrôle), soit dans ton buttons tu ajoute cette ligne à ta table de données et peut-être un refresh du datagridview.


Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Merci de ta réponse, cependant, je ne comprends toujours pas ce qu'il faut faire :/
Je ne vois pas quel type de ligne je dois mettre dans mon button.
De plus, je ne vois pas ou se trouve le menu dont tu parles :/
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
Cette ligne de code

dataGridView1.DataSource = mesDonnees;


implique que qu'une nouvelle ligne de donnée doit être ajoutée à la table affichée de "mesDonnees".

soit tu actives l'ajout directement dans le tableau (normalement c'est le cas par défaut), il y a alors une ligne vierge dans laquelle tu peux écrire:
ou ici si l'image ne s'affiche pas.

soit tu utilises la méthode NewRow de ta table.


Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Apparemment, ça ne marche pas. Je n'arrive toujours pas à ajouter ma saisie dans mon datagridview.
L'ajout dans le tableau est bien activé.
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
Peux tu mettre le code?


Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Le code est le même que celui cité au dessus. :/
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
" Impossible d'ajouter par programmation des lignes à la collection de lignes DataGridView lorsque le contrôle est lié aux données."



donc ça
dataGridView1.Rows.Add(this.maskedTextBox1.Text, this.textBoxLibelle.Text, this.maskedTextBox2.Text, this.textBoxCategorie.Text);
pas possible


soit tu tapes tes valeurs dans la ligne vierge à la place de les taper dans tes textbox, soit tu utilises la méthode NewRow de ta table à la place de dataGridView1.Rows.Add

Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

D'accord merci. ^^
Sachant que je dois garder mes textbox, je me suis informé sur la méthode NewRow, n'étant pas sur de comment ça fonctionne, je vous met ce que j'ai écris :

public DataRow Saisie;

Saisie = mesInfos.NewRow();
Saisie["Date"] = maskedTextBox1;
Saisie["Libellé"] = textBoxLibelle;
Saisie["Montant"] = maskedTextBox2;
Saisie["Categorie"] textBoxCategorie;
mesInfos.Rows.Add(Saisie);
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
Ca devrait être bon, à un détail prés.
Il faut que tu affectes le .Text de tes maskeditbox.

Si tu dois passer obligatoirement par tes textbox, je te conseille d'invalider, ajout, modification et suppression de ton datagridview.


Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Et bien non, ça ne marche toujours pas ^^'
Cette fois j'ai une autre erreur "La référence d'objet n'est pas définie à une instance d'un objet." sur la ligne
"Saisie = mesInfos.NewRow();"

J'ai bien rajouté le .Text
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
As tu préalablement déclaré "Saisie"?


Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Oui, avec "public DataRow Saisie;"
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
Et la déclaration de mesInfos a t elle une portée suffisante?


Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

Exactement la même :

public DataTable mesInfos;
Messages postés
15076
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 novembre 2020
456
Exécute ton appli, quand ça bug déplace la sourie sur les deux variable et attends l'infobulle, tu sauras alors laquelle des deux variable n'est pas définie.

ensuite cherche la portée de déclaration de cette variable, en gros elle correspond au couple d'accolade qui l'ensère:

public form1 : form
{
private string toto// valable sur toute la form

public form1()
{
string tutu// valable uniquement dans cette méthode
}

public void Tata()
{
//ici toto est définit mais pas tutu
}

}


si tu ne trouves pas envoie ton code entier (pas forcément les fonctions qui marchent)

Whismeril
Messages postés
14
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
13 novembre 2011

J'ai revérifier :/
Je t'ai envoyer le code.

Merci encore de ton aide
Messages postés
12
Date d'inscription
mercredi 5 mars 2014
Statut
Membre
Dernière intervention
6 mai 2014

Bonjour, svp tu peut nous partagé la solution car j'ai le méme probléme et merci d'avance :)