Afficher saisie textbox dans datagridview

morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011 - 12 nov. 2011 à 15:21
riri2312 Messages postés 12 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 6 mai 2014 - 17 avril 2014 à 22:04
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

morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
12 nov. 2011 à 18:11
Désolé du second post, mais je relance ^^'
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
12 nov. 2011 à 22:30
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
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
12 nov. 2011 à 23:12
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 :/
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 08:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 11:14
Apparemment, ça ne marche pas. Je n'arrive toujours pas à ajouter ma saisie dans mon datagridview.
L'ajout dans le tableau est bien activé.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 11:24
Peux tu mettre le code?


Whismeril
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 11:29
Le code est le même que celui cité au dessus. :/
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 12:32
" 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
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 16:41
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);
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 17:30
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
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 20:06
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
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 20:25
As tu préalablement déclaré "Saisie"?


Whismeril
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 20:28
Oui, avec "public DataRow Saisie;"
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 20:35
Et la déclaration de mesInfos a t elle une portée suffisante?


Whismeril
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 20:40
Exactement la même :

public DataTable mesInfos;
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
13 nov. 2011 à 20:55
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
0
morfol13170 Messages postés 14 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 13 novembre 2011
13 nov. 2011 à 21:25
J'ai revérifier :/
Je t'ai envoyer le code.

Merci encore de ton aide
0
riri2312 Messages postés 12 Date d'inscription mercredi 5 mars 2014 Statut Membre Dernière intervention 6 mai 2014
17 avril 2014 à 22:04
Bonjour, svp tu peut nous partagé la solution car j'ai le méme probléme et merci d'avance :)
0
Rejoignez-nous