2010-10-03 7 views
1

sous-jacente Ceci est mon code:Pourquoi mon DataGridView pas la mise à jour des changements sur le DataTable

private void button1_Click(object sender, EventArgs e) 
    { 
     DataTable table = new DataTable(); 
     using (SqlCeDataAdapter sqlCeDataAdapter = new SqlCeDataAdapter("SELECT * FROM test", sqlCeConnection)) 
     { 
      sqlCeDataAdapter.Fill(table); 
     } 
     dataGridView1.DataSource = table; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     MessageBox.Show(((DataTable)dataGridView1.DataSource).Rows.Count.ToString()); 
    } 

Ce que je suis en train de faire est de mettre à jour la base de données sous-jacente, mais selon this tutoriel, le DataTable valeurs sous-jacentes besoin de refléter les changements effectués sur le DataGridView chaque fois que je modifie les lignes. Ce que je fais est juste en cours d'exécution de l'application, en appuyant sur button1, puis en supprimant certaines lignes dans le DataGridView puis en appuyant sur button2 pour voir combien de lignes je reçois. Sur cette application, je reçois le même nombre de lignes qu'avant de supprimer des lignes, mais si je remplace DataSource avec un DataTable que je me peuple (En appelant DataTable.NewRow() et ainsi de suite), les changements sont répercutés sur le DataTable chaque fois que je supprime une ligne (le DataTable sous-jacent contient moins de lignes après en avoir supprimé certaines).

Répondre

3

Votre code semble incomplet même si vous le comparez avec l'article auquel vous faites référence.

Dans l'article lui-même, c'est la BindingSource qui est utilisée pour atteindre la fonctionnalité que vous essayez d'atteindre. Reportez-vous au code ci-dessous tel qu'utilisé dans cet article.

//BindingSource to sync DataTable and DataGridView 
BindingSource bSource = new BindingSource(); 

Puisque vous semblez en apprendre davantage à ce sujet, je ne vous donnerai pas de code exact mais des pointeurs dans la direction générale.

Voir comment l'objet ci-dessus est utilisé dans l'exemple de tutoriel. Cela devrait vous aider à simuler un comportement similaire à celui que vous recherchez.

En outre, une fois de plus, une fois que vous avez apporté des modifications après avoir lié une grille à une source de données, vous devez DONNER la source de données à mettre à jour lui-même. Ceci est également couvert dans l'exemple de code du didacticiel.

Espérons que cela aide! Je suggère également que vous lisez le MSDN à la fois liés à BindingSource et DataAdapter que vous devez utiliser les deux en même temps pour que votre fonctionnalité fonctionne comme vous le souhaitez.

Questions connexes