Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : conserver ses données en passant d'une page à l'autre [ Archives ASP & ASP.NET / ASP.net ] (marhoa)

mercredi 3 août 2005 à 14:30:54 | conserver ses données en passant d'une page à l'autre

marhoa

Salut, J'ai créé une page aspx où l'utilisateur doit entrer des informations qui seront enregistrées dans une table de base de données. Et, pour éviter d'avoir à faire des requètes supplémentaires avant d'éxécuter ma requète, j'ai voulu créer une classe dont certains champs sont remplis pdt que l'utilisateur fait ses choix. Afin que celle si soit accessible de l'ensemble des fonctions que j'utilise, je l'instancie en dehors des fonctions, juste après sa déclaration, comme ci-dessous: public class CIntervention { public CIntervention(){} public decimal dNature; public decimal dRefSite; public string sRefIntervenant; }; CIntervention oIntervention = new CIntervention(); Oui mais voilà, les choix de l'utilisateurs sont effectués grâce à des listes déroulantes qui entrainent le rechargement de la page lorsqu'on les sélectionne (propriété autopostback à true) et aujourd'hui, je m'aperçois qu'au chargement de la page mon objet oIntervention est réinstancié et mes données sont écrasées. Je me demande donc s'il y a un moyen de stocker mes données autrement. Je me demande aussi si la façon de gérer mais classes est vraiment conforme à ce qu'on doit faire sur asp.net, à ce sujet si quelqu'un connait un livre, un site ou un tutorial expliquant le fonctionnement des classes sous asp.net, pourrait-il me dire comment me les procurer? Une autre question me taraude au plus haut point, est-il vraiment possible de faire ce que je veux faire? Voilà, merci de votre aide

mercredi 3 août 2005 à 15:41:56 | Re : conserver ses données en passant d'une page à l'autre

jesusonline

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Bonjour,

pour la gestion des classes, n'importe quelle bouquin traitant de la programmation orienté object fera l'affaire, en VB.net je ne pense pas que ca existe, mais tu pourras trouver les concepts important de la COO dans n'importe quel bouquin traitant du sujet (généralement en C++)

Pour ton problème d'ecrasement, c'est normal, il faut bien voir que chaque requete entraine le rechargement complet de la page, donc à chaque fois il va passer par lepage_load etc... pour savoir si la page vient d'un postback tu as la propriété page.ispostback et tu peux egalement stocké des variables simples dans le viewstate de la page, mais attention ca ecrit ca dans un champ caché de la page HTML, donc le transfert de la donnée se fait 2 fois ...

pour cela, il faut que t'as classe soit serializable et ensuite tu met ton objet dans le viewstate. Pour rendre ta classe serializable, il faut utiliser l'attribut Serializable

[serializable()]
public class CIntervention
{ ... }

et enfin pour recuperer / mettre la variable dans le viewstate on utilise généralement une propriété

public property obj as Tonobject
get
if not viewstate("keyobj") is nothing then
'c'est pas bien de parser comme ca !!!
try
return ctype(viewstate("keyobj"))
catch
return defobj
end try
end if
return defobj
end get
set (byval value as TonObject)
viewstate("keyobj") = value
end set
end property


Je viens d'y penser pour un bouquin pour les classes en C# il y a le formation à C# de Ms press, et pour la gestion de projet en asp.net j'ai pas lu de bouquins en parlant bien. C'est surtout l'experience ...


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

jeudi 4 août 2005 à 17:22:39 | Re : conserver ses données en passant d'une page à l'autre

marhoa

Merci pour la serialisation, ça m'a bien aidé. Par contre j'ai pas étudié le viewstate, en fait je créé un fichier xml ou je stocke les données de ma classe (à l'aide de la méthode serialize)et lorsque la page se relance j'utilise la méthode deserialize pour réintroduire les données dans mon instance de classe. Peut être que plus tard j'essaierai avec viewstate mais là j'ai pas trop le temps. Pour la programmation en objet j'ai pas de problème mais c'est la gestion des classes par asp.net dont je suis pas sûr mais là ça marche donc ça doit pas être trop mal. Quand au livre "Formation à c#", ça fait un moment que j'en ai entendu parler mais il est toujours en rupture de stock, il va falloir que j'aille voir sur d'autres sites. En tout cas merci, Serialize m'a sauvé la vie! (et toi aussi) Salut

jeudi 4 août 2005 à 17:28:36 | Re : conserver ses données en passant d'une page à l'autre

jesusonline

Membre Club Administrateur CodeS-SourceS
ben si t'as fait un serialize tu stockes ou le xml ? sur le dd ? et si plusieurs personnes font la requete ?

pour le viewstate, c'est tout con au lieu de sauvegarder le fichier xml sur le dd ou ailleurs tu fais

viewstate(key) = instance_de_ton_object

puis ensuite pour le recuperer un simple ctype(viewstate(key), typedetonobject) et c'est finit :)


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

lundi 8 août 2005 à 15:30:00 | Re : conserver ses données en passant d'une page à l'autre

marhoa

oui je stocke le fichier sur le disque dur mais chaque utilisateur étant identifié, chacun a un fichier avec un nom différent (dès fois je réfléchis un peu quand meme). Mais je crois que je vais essayer avec le viewstate parceque, apparemment VS aurait un bug avec la gestion des fichers xml (moi j'utilise WebMatrix mais bon...). Lorsque je tente de charger le fichier xml, je recois l'erreur suivante: The process cannot access the file "\\PRINTSIEGC04N2\DevOuest\MitelOrga\donneesSEB.xml" because it is being used by another process. Apparemment le seul moyen de fixer ce problème est de modifier l'antivirus du serveur mais je n'ai pas accès à mon serveur IIS, je ne peux pas effectuer ces manips. Donc je vais faire comme tu dis, en plus ça évitera de crééer pleins de petits fichiers sur le serveur.

lundi 8 août 2005 à 16:05:11 | Re : conserver ses données en passant d'une page à l'autre

jesusonline

Membre Club Administrateur CodeS-SourceS
Le problème que tu décris, c'est que IIS a déjà la main sur le fichier, et 2 process ne peux pas locker le fichier en meme temps et heureusement, mais peut etre que tu as oublié de faire un dispose dans ton code ?


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

mardi 9 août 2005 à 10:10:10 | Re : conserver ses données en passant d'une page à l'autre

marhoa

ba le dispose il en veut pas: monStreamReader.Dispose(); ->'System.IO.TextWriter.Dispose(bool)' is inaccessible due to its protection level Par contre j'ai essayé d'utiliser viewstate mais là encore... (tu vas croire que j'en fait exprès). Je n'ai pas pu utiliser CType car ça n'existe pas en c# mais j'ai forcé la conversion et ça semble passer mais... CIntervention Intervention2 = new CIntervention(); Intervention2 = (CIntervention)ViewState["intervention"]; ->Object reference not set to an instance of an object. Pourtant j'ai cherché mais le problème ne vient pas des fonctions utilisées mais de l'objet (enfin c'est ce que je crois d'après mais faibles compétences et aussi d'après la phrase d'erreur) et là pour comprendre c'est plus chaud. Il parle de référence, serait-ce un problème de pointeur? Là, je m'en remets à toi! ou à une autre âme charitable qui passerait dans le coin parceque là ça bloque un petit peu l'avancer de mon projet, Merci d'avance.

mardi 9 août 2005 à 10:15:07 | Re : conserver ses données en passant d'une page à l'autre

jesusonline

Membre Club Administrateur CodeS-SourceS
ctype n'existe pas en c# mais l'equivalent est bien ce que tu as fait :)

Ton problème est normal !

la premiere fois que tu vas chercher ton objet le viewstate est vide et en faisant ce que tu veux ca revient à faire

(CIntervention)null

et il aime pas caster null en un autre objet :p

c'est pour ca que si tu regardes le code que j'ai mis plus haut, j'avais fait

if ! viewstate["intervention"] == null then

Le problème est il compris ?


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

mardi 9 août 2005 à 12:00:34 | Re : conserver ses données en passant d'une page à l'autre

marhoa

Mais c'est biensur! Je suis vraiment naze, c'était pourtant pas compliqué à voir mais j'étais carrément parti voir ailleurs: je pensais que justement lors de la première execution ca marchait mais que c'était lorsque le ViewState était plein que ça faisait tout planté. Enfin bon, encore une fois, c'est une victoire de superJesusOnline! Merci JE T'AIME! :) (bon ok je me calme)



Cette discussion est classé dans : public, page, données, conserver, cintervention


Répondre à ce message

Sujets en rapport avec ce message

confirmation de suppression [ par Stef ] Salut à tous!Sauriez vous me dire comment je peux faire pour créer une page popup type de demande de confirmation de suppression d'enregistrement ds u Afficher une image d'une base de données sur une page web [ par jimini ] Est-ce que quelqu'un sait comment afficher une image provenant d'une table ? J'aimerais enregistrer une image par ligne dans ma base de données. Tout Aidez moi SVP je perds les données d'un formulaire!!! [ par vlavaud ] Bonjour , J'ai un gros problème , j'ai fait un site en asp avec un page séparée en deux par une frame (Donc trois pages )dans la page du haut j'ai des Insertion de données dans une BD à la fermeture d'une page [ par cfabre22 ] Bonjour à tous,je souhaiterais savoir s'il est possible d'insérer des données dans une base de données lors de la fermeture d'une page asp.En vous rem Extraction de données d'une page web [ par atarik ] SVP, j'ai besoin de savoir comment extracter le contenu d'un tableau d'une page web et la mettre ds ma page pour être toujours à jours.c'est très urge récupérer les données d'une liste dans une autre page [ par foofur ] Bonjour a tous et à toutes,Je dispose de 2 listes : une contenant les champ d'une table et l'autre permettant de choisir comment l'ordre de ces champs Envoie de données vers une page d'accès aux données et redirection vers celle-ci (URGENT) [ par LG1 ] Bonjour1) Dans une page HTML, en vbscript j'exécute une requête et je mets le résultat dans un RecordSet. 2) J'ai créé une page d'accès aux données à Form rechargée lors reaffichage de la Page [ par merlu ] Dans ma Page: Une Form et un ajout en base de données. Un fois la form ajoutée , les informations sont stockés en base de données SQL.Seulement, Affichage dans excel et mise à jour simultané des données [ par fr64 ] Bonjour,Afin d'afficher des données dans excel via une page asp, j'utilise l'instruction Response.ContentType="application/vnd.ms-excel"Les données qu Prob de refresh [ par ypothier ] Bonjour, J'ai une page en asp qui se connect sur une BD SQL SERVER.Dans ma page, lorsque je clique sur un bouton, je fais apparaître une nouvelle fenê


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 4,945 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.