Bonjour
Je voudrais savoir comment on enregistre les CRUD effectué sur une <dg:datagrid> .. dans la base de données ?
Merci d'avance
Version imprimable
Bonjour
Je voudrais savoir comment on enregistre les CRUD effectué sur une <dg:datagrid> .. dans la base de données ?
Merci d'avance
En supposant que ton DataGrid soit bindé sur une DataTable, il faut utiliser un DataAdapter, comme expliqué ici :
http://dotnet.developpez.com/articles/ado2/
enfaite .. je pense s'il ya une autre solution en binding ou pareil au modification des datagrid sur silverlight ??
Le binding, c'est une chose ; la mise à jour de la DB, c'est autre chose.
Le binding va mettre à jour le modèle de données en mémoire (DataTable, liste d'objets, etc), mais ça ne va pas mettre à jour la DB automatiquement, il faut le faire manuellement.
Et pour Silverlight c'est encore une autre histoire vu qu'on ne peut pas accéder directement à la base de données...
je ne sais rien .; je suis debutant en Wpf
j'ai plus qu'une trentaine de champs sur ma grid .. il n'ya pas une maniere pour copier les modifications faite sur ma grille vers ma dataset et ensuite vers ma bdd ,ou directement vers ma bdd??
sans etre obligé de le faire en requete
:cry:
Si, avec un DataAdapter, comme expliqué dans ma première réponse.
Bah la seule façon de mettre à jour une BDD est de faire une requête... après, elle peut éventuellement être générée et exécutée automatiquement, par un DataAdapter par exemple
je pense que c'est exactement ce que je essayé faire mais ca marche pas
mais il me sort l'erreur suivante:Code:
1
2
3 da1 = new OleDbDataAdapter("select * from lignes where ref_facture = '" + Class1.reff + "'", con); da1.Fill(ds, "details"); da1.Update(ds.Tables["details"]);
Citation:
Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.
Le Fill, c'est pour charger les données depuis la base, pas pour enregistrer les modifications... si tu fais un Fill, tu vas écraser les modifications déjà faites dans la DataTable.
Pour pouvoir faire un Update sans spécifier explicitement la requête UpdateCommand, il faut utiliser un CommandBuilder :
Code:
1
2
3 da1 = new OleDbDataAdapter("select * from lignes where ref_facture = '" + Class1.reff + "'", con); var builder = new OleDbCommandBuilder(da1); da1.Update(ds.Tables["details"]);
mais la ca va me demander que je dois avoir une UpdateCommand :
La génération SQL dynamique de UpdateCommand n'est pas prise en charge pour un SelectCommand qui ne retourne pas des informations de colonne clé.
donc est ce que je doi ecrire obligatoirement ma requete d'update ??
sur ma base de données oracle la clé est définie :roll:
Bah peut-être qu'OleDB est pas capable de la récupérer alors... de toutes façons, tu ne devrais pas utiliser OleDB quand il existe un provider ADO.NET spécifique. Utilise le provider fourni par Oracle (ODP.NET), tu auras (un peu) moins de problèmes