Bonjour,
Je remplis un dataset lorsque j'arrive la premiere fois sur ma page, mais lorsque je click sur un bouton qui a pour but d'appeler une procdedure, j'observe que mon dataset est vide ?!?
Dois je remplis mon dataset a chaque POSTBACK ?
merci
Bonjour,
Je remplis un dataset lorsque j'arrive la premiere fois sur ma page, mais lorsque je click sur un bouton qui a pour but d'appeler une procdedure, j'observe que mon dataset est vide ?!?
Dois je remplis mon dataset a chaque POSTBACK ?
merci
Faut que tu le mettes dans un objet session pour le rendre persistant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Session["MyDataset"] = myDataset; ... MyDataset = (DataSet)Session["MyDataset"] ;
Je croyais justement que l'un des interets du dataset etait qu'il gardait les donnees puisque nous sommes en mode deconnecté.
Si le dataset est connecté a un datagrid, alors les donnees sont gardée ?!? par consequent j'en conclu que c'est le datagrid qui garde toutes les donnees et non le dataset ?
bizarre non ?
tu peu faire voir ton code ?
parce que moi aussi j'ai un dataset mais il ne se vide pas à chaque fois !!![]()
Salut,
Tu ne dois pas avoir bien saisi tous les concepts :
- un DataSet travaille en mode déconnecté (de la base de donnée) : tu ouvres une connexion, tu ramenes toutes les données qui t'intéressent de la base, tu ferme la connexion, et ton DataSet contient tes données. Par opposition au DataReader qui travaille en mode connecté : Tu ouvres une connexion, ton dataReader te permet de lire au fur et à mesure tes données, quand tu as fini, il faut fermer la connexion.
- tu développes un site Web, donc qd tu crées un DataSet, celui-ci est stocké en mémoire coté serveur. Lors d'un aller-retour vers le client, tes variables qui etaient en mémoire coté serveur sont libérées, au retour ces variables il faut les réinitialisées. Pour ton dataSet ça veut dire :
- soit le reremplir depuis la base
- soit le sauver qque part, par exemple en session
- qd tu bind ton dataGrid à ton DataSet, un autre "phénomène" entre en jeu : le ViewState. Le viewState est une collection de "trucs" (ce que tu veux) qui est stocké coté client cette fois (il fait l'aller-retour à chaque fois). Ce ViewState sert en particulier à sauver l'état des controles d'une page asp.net pour que justement cet état ne soit pas perdu à chaque aller-retour. Donc en fait le contenu de ta DataGrid se retrouve sauvé dans le ViewState, et c'est de cette maniere que ce contrôle te donne l'IMPRESSION de garder des données, MAIS, si par exemple tu ajoutes des données dans ta base, ton DataGrid ne reflètera JAMAIS ces changements si tu ne le rebind pas à un dataSet qui a été MIS A JOUR.
J'espere que mes explications sont claires
PS : tu peux désactiver la sauvegarde automatique de l'etat de tes contrôles puisqu'ils ont tous une propriété EnableViewState que tu peux positionner à false. Si tu essayes avec ton DataGrid, tu verras que tout comme ton DataSet, il "perd" sont état à chaque PostBack.
Merci pour tes explications, en faite depuis le debut il y a qq chose qui me chiffonne, je voudrais me servir de DataSet.HasChanges(DataRowState.Modified) lorsque je click sur le bouton valider afin de faire un update de la Bdd a partir du dataset; car je ne veux pas faire un 'update' si y a pas eu de changement.
Partager