Probléme avec la mise a jour d'une DataTable avec WPF

cs_ba3wech Messages postés 13 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 11 mars 2010 - 6 févr. 2010 à 21:50
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 - 6 févr. 2010 à 23:50
Salut
J'ai un problème avec la mise à jour de mon DataTable.
Pour récupérer mon DataTable j'utilise cette méthode:
public static DataTable excutequery(string query)
{
try
{

SqlDataAdapter sqladapter = new SqlDataAdapter(query ,cnx );
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sqladapter);
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
sqladapter.Fill(table);
return table;
}
catch (SqlException e)
{
MessageBox.Show(e.ToString ());
return null;
}

}
Cette méthode me retourne une DataTable et je fais un binding d'un listbox (qui a comme template une image et un textbox) avec cette DataTable;
et j'ai deux boutons
une pour supprimer l'élément sélectionné,
if (ImageView.CurrentPosition > -1)
ImageView.RemoveAt(ImageView.CurrentPosition);
et une pour faire la mise a jour de la basse des données
tablProductImage.AcceptChanges();
mon problème est la avec AcceptChanges même si je fais des modifications avec le binding la base des données n'est pas mise à jour
Merci :)

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
6 févr. 2010 à 23:01
Salut

C'est le update qui fait la mise à jour et il faut pas que l'acceptchanges soit appelé avant.

Il faut que l'insertcommand et l'updatecommand soit defini sur le sqladapter.

acceptchanges et rejectchanges est pour la gestion en mémoire


Bon dev.
0
cs_ba3wech Messages postés 13 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 11 mars 2010
6 févr. 2010 à 23:07
je crois que l'update est utilise que avec le tableAdpter
alors dans ce cas je pense qu'il faut changer la methode, mais ce n'est vraiment ca ce que je cherche
ce n'est pas possible de le faire avec ce datatable ?!
sinon je peux le faire avec le LINQ est c'est beaucoup plus simple mais bon je dois garder la même méthode (peut être faire des petits modifications mais sans changer le return)
Une solution please?
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
6 févr. 2010 à 23:15
Il ne faut pas confondre ado.net et linq.

Ado.net c'est
--> Mode déconnecté avec les tableadapter et dataset
--> Mode connecté c'est avec command

Linq c'est base sur un context qui représente
pour chaque table une classe
bien sur linq est basé sur ADO.NET mais permet d'abstraire plus de notions et permet
de gérer les requetes de maniere automatique.

Bon dev.
0
cs_ba3wech Messages postés 13 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 11 mars 2010
6 févr. 2010 à 23:44
Voila mais dans mon cas je suis en train d'utiliser le mode connecté avec ce bout de code
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(sqladapter);
DataTable table = new DataTable();
table.Locale = System.Globalization.CultureInfo.InvariantCulture;
sqladapter.Fill(table);
À chaque fois je crée mon DataTable selon ma commande,
J'ai parlé de LINQ juste pour montrer que j'ai besoin de trouve une solution avec le DataTable si c'est possible bien sue
Sinon avec le LINQ c'est beaucoup plus facile et ca marche bien :)
Merci nhervagault :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Modérateur Dernière intervention 15 juillet 2011 37
6 févr. 2010 à 23:50
Salut,

C'est du mode déconnecté que tu fais le dataadapter et les dataset
c'est pour le mode déconnecté.


Plus d'info ici
http://msdn.microsoft.com/fr-fr/vbasic/bb265246.aspx
0
Rejoignez-nous