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 :

[PostBack] code du PageLoad sous condition


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut [PostBack] code du PageLoad sous condition
    Bonjour,

    j'ai un petit soucis avec les PostBack

    Structure du site:
    le site est construit sur une Page qui possede le menu, les images et au niveau centrale un DynamicControlsPlaceholder(merci a Denis Bauer)

    je possede ensuite une suite de WebUserControls pour chaque page, a chaque click sur un element je charge le WebUserControl correspondant dans le DynamicControlsPlaceHolder(qui est regler sur ControlsWithoutIDs="Persist" : recrèè les controls en conservant leur parametre après PostBack)

    Je suis entrain de realiser le WebUC pour la modification des infos utilisateur, au chargement de la page je lit et affiche les infos

    puis si je clique sur "Valider" j'effectue certain control et si possible je sauvegarde les changement dans la base de donnèes.


    mon problème est le suivant: le code du bouton Valider est traiter après PostBack, ainsi le code du PageLoad(chargement des information) est executer avans et donc les modification sont perdus.

    j'aimerais pouvoir savoir si je doit ou non charger les infos de l'utilisateur dans le PageLoag. j'ai bien essayer de recuperer le EVENTTARGET mais il est vide....

    PS: mon bouton de validation et "cmdValider1"


    merci pour votre aide


    voici le code de mon WebUC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public partial class MonCompte : UserControl
    {
        MembershipUser user;
     
        protected void Page_Load(object sender, EventArgs e)
        {
            user = Membership.GetUser();
     
            if (Request.Form["__EVENTTARGET"].ToString() == "cmdValider1")
            {
                txtLogin.Text = user.UserName;
                txtEMail.Text = user.Email;
                txtPassword.Text = "";
                txtPasswordConfirmation.Text = "";
                txtQuestion.Text = user.PasswordQuestion;
            }
        }
     
        protected void cmdValider1_Click(object sender, EventArgs e)
        {
            if (user.UserName != txtLogin.Text && Membership.GetUser(txtLogin.Text) != null)
            {
                lblLoginDoublon.Visible = true;
                lblInformations1.Text = "Validation Impossible 1";
                table.Rows[5].Visible = true;
                return;
            }
            if (!Membership.ValidateUser(user.UserName, txtPasswordActuel1.Text))
            {
                lblInformations1.Text = "Validation Impossible 2";
                table.Rows[5].Visible = true;
                return;
            }
     
            user.Email = txtEMail.Text;
            Membership.Provider.UpdateUser(user);
     
            lblInformations1.Text = "Validation Réussie";
            table.Rows[5].Visible = true;
        }
    }

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

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    if(!IsPostBack) ...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 612
    Par défaut
    impossible, tout est PostBack dans l'histoire, donc lorsque je passe de la page "news" a la page "mon compte" c'est un PostBack qui a changer le WebUC principal


    j'ai neanmoins trouver un debut de solution grace a un article(made in Developpez.com) traitant la durèe de vie des page et si j'insert mon code dans le PreRender les modifications de mes controls se fait après leur re-creation et après execution du code de validation

    extrait
    Pour résumer, lors de l'affichage d'une page, on va passer par une phase d'initialisation (OnInit), une phase
    d'initialisation par le code utilisateur (OnLoad), une phase de validation et de levé d'événements des contrôles
    (OnClick, OnSelectedIndexChanged, etc ...), une phase de rendu (OnPreRender) et une phase de déchargement
    (OnUnload).
    en deplacant le code de "OnLoad" vers "OnPreRender" l'actualisation de mes TextBox est impecable


    il me reste neanmoins un dernier bug

    j'affiche m'as page, je fait mes modif
    je valide
    rien, page d'origine(sans modif)
    je fait d'autre modif
    je valide
    les 2ème modif sont très bien prise en compte....


    les test lier a "state" sont utiliser pour definir quel valeur doive etre actualiser ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    public partial class MonCompte : UserControl
    {
        MembershipUser user;
        string state = "";
     
        protected void Page_Load(object sender, EventArgs e)
        {
            user = Membership.GetUser();
        }
     
        protected override void OnPreRender(EventArgs e)
        {
            if (state != "ErreurLogin" && state != "ErreurPassword")
                txtLogin.Text = user.UserName;
     
            if (state != "ErreurPassword")
            {
                txtEMail.Text = user.Email;
                txtPassword.Text = "";
                txtPasswordConfirmation.Text = "";
                txtQuestion.Text = user.PasswordQuestion;
            }
     
            base.OnPreRender(e);
        }
     
        protected void cmdValider1_Click(object sender, EventArgs e)
        {
            table.Rows[5].Visible = true;
     
            if (user.UserName != txtLogin.Text && Membership.GetUser(txtLogin.Text) != null)
            {
                lblLoginDoublon.Visible = true;
                lblInformations1.Text = "Validation Impossible";
                state = "ErreurLogin";
                return;
            }
            if (!Membership.ValidateUser(user.UserName, txtPasswordActuel1.Text))
            {
                lblInformations1.Text = "Validation Impossible";
                state = "ErreurPassword";
                return;
            }
     
            user.Email = txtEMail.Text;
            Membership.Provider.UpdateUser(user);
     
            lblInformations1.Text = "Validation Réussie";
            state = "";
        }
    }

Discussions similaires

  1. Code VBA "Suppression de ligne sous condition"
    Par BD_NXO dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/04/2014, 13h33
  2. [XL-2013] Modif code VBA copie colle sous condition
    Par d.deneys dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/09/2013, 18h56
  3. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  4. éxécution d'un code sous condition
    Par bourguignon21 dans le forum VBA Access
    Réponses: 3
    Dernier message: 16/07/2007, 10h54
  5. [VBA-E]executer "du code" sous conditions
    Par Echizen1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2006, 20h02

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