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

Signaler
Messages postés
13
Date d'inscription
mercredi 28 janvier 2009
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
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

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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.
Messages postés
13
Date d'inscription
mercredi 28 janvier 2009
Statut
Membre
Dernière intervention
11 mars 2010

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?
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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.
Messages postés
13
Date d'inscription
mercredi 28 janvier 2009
Statut
Membre
Dernière intervention
11 mars 2010

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 :)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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