2009-04-04 5 views
0

Dans mon projet C#, j'ai rempli les valeurs dans DataGrid à partir de DataTable. Maintenant, si je fais des changements dans les valeurs dans le DataGrid, j'ai besoin de les mettre à jour dans la base de données. J'utilise l'accès MS. Voici l'extrait de code de la façon dont je peuple les valeurs dans le DataGrid.comment mettre à jour dataGrid dans la base de données

    while (myReader.Read()) 
       { 
        frmBind.dr = frmBind.dtResults.NewRow(); 
        frmBind.dr["ClassName"] = myReader.GetString(0); 

        frmBind.dr["MethodSignature"] = myReader.GetString(1); 

        frmBind.dr["ParameterValues"] = myReader.GetString(2); 
        frmBind.dr["ExpectedResults"] = myReader.GetString(3); 


        frmBind.dtResults.Rows.Add(frmBind.dr); 

       } 

       frmBind.dataGrid2.DataSource = frmBind.dtResults; 

où, dtResults est DataTable, frmBind est un objet de classe, DataGrid2 est le DataGrid, myReader.Read() est utilisée pour obtenir les valeurs de la base.

Répondre

1

Je vous suggère de supprimer le lecteur de données.

Faites glisser un SQLDataSource sur la page et configurez-le avec votre requête. Il vous donnera lecture/mise à jour sans écrire de code du tout.

+0

Non, l'OP utilise Access et WinForms (très probablement). –

+0

Mes excuses - Henk est correct. J'ai vu DataGrid et j'ai pensé à GridView. Je faisais trop de WebForms récemment. – RichardHowells

1

La méthode la plus simple serait d'utiliser un adaptateur xxx (en fonction du fournisseur ADO que vous utilisez).

S'il vous plaît vérifiez si vous avez une bonne raison de ne pas utiliser Drag and Drop (pour les débutants au moins). Voici quelques useful videos, vérifiez d'abord celles concernant les ensembles de données.

Si vous voulez le faire en utilisant xxxCommands, vous aurez besoin d'une InsertCommand, UpdateCommand et DeleteCommand. Vous itérez sur les lignes et vérifiez le RowState. Si RowState == DataRowState.Added puis utiliser la commande InsertCommand etc.

Il peut être pratique d'utiliser d'abord dtchanged = dtResults.GetChanges(), et faire une boucle dans les enregistrements qui vous donne.

Questions connexes