IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[VB.NET] controle utilisateur perte de donnée, au secours !!


Sujet :

ASP.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut [VB.NET] controle utilisateur perte de donnée, au secours !!
    Bonjour,

    Voilà je vais essayer d'expliquer mon problème avec un exemple simpe (con, mais simple )

    Alors j'ai une page qui me sert à saisir des données à propos d'une personne ou d'un chien. En début de page j'ai un dropdownlist (DDL) qui me permet de choisir entre personne ou chien. En fonction du choix je charge un controle utilisateur qui contient le formulaire adéquat.
    Prenons maintenant le formulaire personne (control utilisateur), ademttons qu'une partie du formulaire change en fonction du sexe. Donc je mets une DDL pour le sexe et en fonction du choix je charge un autre controle utilisateur qui contient le bon "sous-formulaire".

    Le problème c'est que dans le sous-formulaire (deuxième controle utilisateur imbriqué dans le premier), j'ai un textbox qui qd je clique sur le bouton de validation du formulaire personne (premier controle utilisateur imbriqué) se vide, ne garde pas la valeur saisie.

    Alors j'ai vérifié que le enableviewstate est a true et je pense avoir bien compris le cycle de vie de la page, ce que je trouve pas c'est une solution pour remédier à mon problème.

    AU SECOURS ...... une bonne âme pourrait-elle m'aider ?

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Ds le OnLoad de ton 1er control, tu dois vider ou initialiser ton 2eme control non?

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    bah en fait je le fais pas dans le onload, mais dans l'evenement selectedIndexChanged de la ddl : homme - femme. J'ai essayé de le mettre dans le OnInit mais ca n'a rien changé : :

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    Si les valeurs sont perdues, j'imagine que soit au moment du LoadViewState ton controle n'a pas encore été créé (mais je crois que dans ce cas la asp.net genere une exception) soit que ton controle est réinitialisé qd tu le recharges.

    Mais comme je te l'ai deja dit, les controles dynamiques en asp.net c'est un peu la galère. une autre solution, moins jolie certe, serait non pas de charger dynamiquement tes controles, mais de les mettre tous de maniere statique et de jouer sur leur propriété visible. Ok c'est une solution de flemmard, mais si t'as pas beaucoup de controles à gérer, ça peut etre vite réglé .

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    c'est vrai que tu me l'as déjà dit, mais je suis têtue et je veux arriver à faire ce que je veux faire crévindiou

    sinon la solution de jouer avec les visible, c'est une bonne idée, mais comme je vous l'ai dit en entete de mon message, mon exemple est une version simplifiée de mon problème. En fait les sous-formulaires correspondent à des templates et donc je voudrais pouvoir ajouter des templates, sans revenir au code de ma page initial.

    c'est pas grave je vais passer par des variables de session pour stocker mes saisies

  6. #6
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    J'ai un peu le mm problème.
    La question est de savoir comment deux web user controls dans une mm page peuvent se passer des variables de formulaire. Le request.form chez moi ne donne rien.
    Mes controles sont "Protected WithEvents" peut-être faudrait-il les rendre "Public"?
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    ah bah c'est pas le même problème moi, le deuxième est imbriqué dans le premier

    pour ton problème, il faut effectivement que tes webuser control aient des propriétés publiques

  8. #8
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    ah mince ! la solution d'enregistrer la saisie dans des variables de session ne marche pas non plus, car je passe bien dans le pageload du deuxième controle, mais pas dans son évènement du textbox.text changed .... ca m'énèrve ... grrr

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    A ta place j'essairai de tracer un peu tous les evenements importants :

    init
    LoadViewState
    page_load
    SaveViewState
    etc...

    Ainsi que les endroits ou tu charges dynamiquement tes controles, histoire de bien voir dans quel ordre tout ça se fait, et tu devrais commencer a avoir une idée de ce qui ne va pas. De tte evidence il y a qque chose que tu fais trop tot ou trop tard . En particulier si tu veux que le viewstate fonctionne correctement il faut que tes controles dynamiques soient chargés avant le LoadViewState !

  10. #10
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Meme si ils sont imbriqués, il ne sont pas dans la mm class.
    Sinon, voici comment sont disposé mes controles dans ma page:

    Les données envoyée par la DDL du premier doivent etre accessible au deuxième. Ils sont dans le mm <form>. Peux-tu me donner plus de précisions pour récupérer mes données postées? Request.form ne donne rien.

    Merci
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    alors voilà c'est ca que je comprends pas dans .NET, comment un controle ajouté dynamiquement à l'action d'un utilisateur peut-il etre initialisé avant l'action de l'utilisateur : ie : au chargement de la page ?

  12. #12
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    usercontrol class 1 a un propriété publique toto
    usercontrol class 2 a un propriété publique titi

    c1 as new class1
    c2 as new class2

    c2.titi = c1.toto

    voilà

  13. #13
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    j'suis désolée sphax, on est intercepté

    mais là j'aimerai vraiment comprendre une bonne fois pour toute

  14. #14
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par lucie.houel
    j'suis désolée sphax, on est intercepté
    Boaf...
    "Winter is coming" (ma nouvelle page d'accueil)

  15. #15
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Immobilis
    Citation Envoyé par lucie.houel
    j'suis désolée sphax, on est intercepté
    Boaf...

    je plaisantais !!!!

    mais ca règle pas mon pblm de compréhension du truc
    SPHAX .... au secours

  16. #16
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Points : 8 734
    Points
    8 734
    Par défaut
    Citation Envoyé par lucie.houel
    alors voilà c'est ca que je comprends pas dans .NET, comment un controle ajouté dynamiquement à l'action d'un utilisateur peut-il etre initialisé avant l'action de l'utilisateur : ie : au chargement de la page ?
    Qd l'utilisateur fais une action, ça entraine un rechargement de la page. C'est à ce moment là que tu dois initialiser ton control

  17. #17
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par lutecefalco
    Citation Envoyé par lucie.houel
    alors voilà c'est ca que je comprends pas dans .NET, comment un controle ajouté dynamiquement à l'action d'un utilisateur peut-il etre initialisé avant l'action de l'utilisateur : ie : au chargement de la page ?
    Qd l'utilisateur fais une action, ça entraine un rechargement de la page. C'est à ce moment là que tu dois initialiser ton control
    nb : WC : webusercontrol

    alors là ok, mais le pb justement c'est que dans le OnLoad et dans le OnInit du WC père le selectedvalue de la DDL homme_femme est à vide, donc je ne sais pas quel WC fils je dois charger !!!!

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    alors voilà c'est ca que je comprends pas dans .NET, comment un controle ajouté dynamiquement à l'action d'un utilisateur peut-il etre initialisé avant l'action de l'utilisateur : ie : au chargement de la page ? Shocked
    C'est effectivement paradoxale, mais si tu suis bien les evenements d'une page, ça se comprend :

    - au départ ta page n'a pas de controle dynamique, juste deux boutons par exemple
    - l'utilisateur clique sur le premier bouton, la page est envoyée, init appelé, viewstate chargé, page_load appelé, fonction de traitement du clic sur le bouton appelée. la tu charges un controle dynamique, disons une text box.
    - l'utilisateur clic sur le deuxieme bouton, la page est envoyée, et si tu veux pouvoir accéder à ta text box dynamique, et que le viewstate fonctionne, alors je pense que tu dois la rechargée (la text box) dans l'init de la page, pour qu'elle existe au moment du load viewstate . Pour ça tu peux peut etre positionner une variable de session indiquant quel controle doit etre chargé lors de l'init de la page...

    Enfin bref, les controles dynamique en asp.net c'est pas de la tarte, mais qd c'est piloté par les actions de l'utilisateurs (au lieu d'infos en base de données par exemple) c'est encore plus pénible

  19. #19
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    alors là ok, mais le pb justement c'est que dans le OnLoad et dans le OnInit du WC père le selectedvalue de la DDL homme_femme est à vide, donc je ne sais pas quel WC fils je dois charger !!!!
    Dans le init le viewstate n'a pas encore été chargé donc tous tes controles sont vides, normal. Dans le page_load, le viewstate est chargé, mais que sur les controles qui existent en quelque sorte . D'ou l'importance de recréer tes controles dynamique avant le loadviewstate, donc dans l'init.

  20. #20
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 270
    Points : 92
    Points
    92
    Par défaut
    Citation Envoyé par Sphax
    Dans le init le viewstate n'a pas encore été chargé donc tous tes controles sont vides[...]
    D'ou l'importance de recréer tes controles dynamique avant le loadviewstate, donc dans l'init.
    oui mais dans mon cas le controle chargé dépend de la saisie de l'utilisateur,
    or si les controles sont vides, je ne sais pas quel est ce choix, non :
    arghh j'vais devenir complètement maboul

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 4 1234 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/02/2011, 14h11
  2. Perte de données Vb.net-access?
    Par Mario Rousson dans le forum VB.NET
    Réponses: 4
    Dernier message: 11/12/2010, 23h22
  3. Probleme de passage de donnée dans un control utilisateur
    Par Luciol44 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/03/2010, 12h44
  4. [Remoting VB.NET 1.1] Perte de données
    Par BalBalNet dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 26/01/2007, 16h16
  5. [VB.Net] Regrouper des controles utilisateurs
    Par Jsh dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/04/2006, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo