2009-09-22 7 views
1

J'ai un joli DataGridView, qui est chargé/rempli par un bouton et un SQLDataAdapter et le saveButton correspondant.DataGrid à l'aide de SQLDataAdapter Mise à jour Problème

private void loadButton_Click(object sender, EventArgs e) 
{ 

    String connString = conStringComboBox.Text; 
    String query = queryStringComboBox.Text; 

    dAdapter = new SqlDataAdapter(query, connString); 
    SqlCommandBuilder cBuilder = new SqlCommandBuilder(dAdapter); 

    dTable = new DataTable(); 

    dAdapter.Fill(dTable); 

    bSource = new BindingSource(); 

    bSource.DataSource = dTable; 

    dataGridView.DataSource = bSource; 

} 


private void saveButton_Click(object sender, EventArgs e) 
{ 
    dAdapter.Update(dTable); 
} 

Chaque fois que j'édite quelque chose dans le fichier dataGridView et que je clique sur Enregistrer, tout est juste Peachy. La valeur dans la cellule correcte sur le serveur SQL est mise à jour. MAIS J'ai implémenté un petit éditeur pour une meilleure vue d'ensemble. Valeur de la cellule X est changé là-bas et il revient au datagridview:

dataGridView.SelectedCells[0].Value = exampleString; 

DataGridView mises à jour en conséquence, je cliquez sur Enregistrer - Mise à jour est exécuté sans accroc, mais la nouvelle valeur est évidemment pas engagée à SQL Server , parce que dès que je charge la même table, elle affiche de nouveau l'ancienne valeur.

Des idées où ce que j'ai oublié ici? Chaque contribution est appréciée!

Répondre

2
dataGridView.EndEdit(); 
bSource.EndEdit(); 
dAdapter.Update(dTable); 

Fonctionne!

Après une longue recherche j'ai finalement trouvé un indice:

Kudos ->.NET WinForms End Current Edit

0

Puisque vous êtes lié à un DataTable, les lignes ont un RowState (original, modifié). Lorsque vous utilisez la fonction d'édition dans la grille, l'état des lignes est modifié, peut-être que l'utilisation de votre méthode pour mettre à jour la cellule ne modifie pas la propriété dataarow des sources sous-jacentes, ou pire ne modifie même pas sa valeur.

+0

Je ne quittais pas l'état d'édition correctement donc vous étiez sur l'argent là-bas, merci pour l'entrée. – Hoax

Questions connexes