Pourquoi il n'a pas d'enregistrer les modifications dans la table de datagridview?
J'ai appliqué datagridview
avec datatable
(Growns). Mon objectif principal est, que l'utilisateur peut travailler avec datagridview
(dataGridView1), le remplissage et la mise à jour des données et lors de la button
ENREGISTRER est sélectionné, toutes les données seront enregistrées dans la datatable, parce que j'en ai besoin pour la suite des travaux.
Tout fonctionne bien, exepté l'enregistrement des données dans la datatable. Ce que je fais mal?
Voici mon code:
private void Form2_Load(object sender, EventArgs e) {
//TODO: This line of code loads data into the 'tekmovalecDataSet.Odrasli' table. You can move, or remove it, as needed.
this.grownsTableAdapter.Fill(this.competitorDataSet.Odrasli);
}
private void buttonSave_Click(object sender, EventArgs e) {
if (EmptySpace())
{
CompetitorDataSet.OdrasliRow newGrownsRow = competitorDataSet.Growns.NewGrownsRow();
newGrownsRow.StN = textStN.Text;
newGrownsRow.Name = textN.Text;
newGrownsRow.Surname = textSN.Text;
newGrownsRow.Club = textC.Text;
newGrownsRow.YBirth = textYB.Text;
competitorDataSet.Growns.Rows.Add(OdrasliNova);
competitorDataSet.Growns.AcceptChanges();
this.dataGridView1.DataSource = competitorDataSet.Growns;
this.Validate();
this.grownsBindingSource.EndEdit();
if (dataGridView1.BindingContext[competitorDataSet.Growns] != null)
{
dataGridView1.BindingContext[competitorDataSet.Growns].EndCurrentEdit();
}
this.grownsTableAdapter.Update(competitorDataSet.Odrasli);
this.grownsTableAdapter.Adapter.AcceptChangesDuringUpdate = true;
}
else
{
MessageBox.Show("Fill ALL data about competitor!");
}
}
P. S.: Quand je remplir manuellement les datatable
, sur le formulaire ouvert datagridview
est rempli, afin datatable
et datagridview
sont connectés, je suppose...
P. S. 2.: bool EmptySpace
fonctionne très bien.
OriginalL'auteur user2528094 | 2013-07-23
Vous devez vous connecter pour publier un commentaire.
Lorsque vous définissez
this.Update(competitorDataSet.Odrasli);
laTableAdapter
les mises à jour les changements deDataTable
(news, supprimé les lignes mises à jour) à la base de données.Depuis que vous appelez
competitorDataSet.Growns.AcceptChanges();
avantTableAdapter.Update
, toutes les modifications de la table sont d'ores et déjà acceptées et TableAdapter n'a rien à mettre à jour.Il suffit donc de retirer
Aussi, si vous définissez
this.grownsTableAdapter.Adapter.AcceptChangesDuringUpdate = true
avantgrownsTableAdapter.Update(competitorDataSet.Odrasli);
, le changement ne sera accepté et donc vous n'avez pas besoin d'accepter les modifications vous-même (et il me semble que la valeur par défaut est True si je ne suis pas sûr que cette ligne est nécessaire)OriginalL'auteur Chris
Vous ne modifiez pas les données avec le datagridview, vous modifiez les données, en utilisant les zones de texte, je pense que c'est votre exemple avec le manuel de remplissage...
Je présume que le code que vous souhaitez utiliser pour mettre à jour la base de données commence à cette ligne:
Je pensez que votre problème est dans le bloc de code suivant (explications en commentaires dans le code):
Si cela ne résout pas votre problème, merci de poster le code de liaison pour votre datagriview.
//grownsBindingSource: this.grownsBindingSource.DataMember = "Growns"; this.grownsBindingSource.DataSource = this.competitorDataSet;//competitorDataSet: this.competitorDataSet.CaseSensitive = true; this.competitorDataSet.DataSetName = "CompetitorDataSet";
et dans datagridview ligne:this.dataGridView1.DataSource = this.odrasliBindingSource;
Ici: et dans datagridview ligne: cette.dataGridView1.DataSource = ce.odrasliBindingSource; ne devrait-elle pas être présent.dataGridView1.DataSource = ce.grownsBindingSource; ?
De ma faute, n'est-ce pas le changer en anglais pour une meilleure compréhension. Cependant, ce n'est pas le cas. Ne fonctionne toujours pas. Est-il un "truc" dans les propriétés de datagridview ou datatable?
Avez-vous essayé la suggestion de Chris?
Oui, j'ai oublié AcceptChanges après la ligne d'en ajouter. Merci pour l'aide, maintenant ça fonctionne =)
OriginalL'auteur CristisS