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 :

[Débutant] perte de propriété disabled sur postback


Sujet :

ASP.NET

  1. #1
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut [Débutant] perte de propriété disabled sur postback
    Bonjour,


    Je suis confronté à un petit problème de débutant :

    Je charge une page avec une dropdownlist active (aucune valeur spécifiée)
    Je fait une action client qui désactive la dropdownlist (en JavaScript).
    Je Postback mon formulaire en cliquant sur un bouton dont le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    protected void btnValider_Click(object sender, EventArgs e)
    {
    //Bout de Code Vide
    }
    Et ma dropdownlist est a nouveau active.

    Ce que je n'arrive pas à comprendre c'est pourquoi toutes les valeurs que je saisi dans les autres champs de mon formulaire sont conservées lors du postback, mais pas ma propriété disabled de ma ddl.

    Merci d'avance,

  2. #2
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut
    Pour clarifier mon message, je souhaiterais que tous mes composants actifs restent actif sur mon postback et que tous mes composants inactifs restent inactifs sur mon postback

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut
    Salut n00bi,

    Il est important de savoir que tout ce que tu fais côté client n'est pas "connu" côté serveur. C'est pourquoi tout cela "disparaît" lors d'un postback.

    A ta place, je ferais mes activations de dropdownlist côté serveur, c'est à dire dans le fichier cs de ta page.

    Sur l'évènement qui doit désactiver ta dropdownlist :
    NomDeLaDropDownList.Visible=false;

    Ou true si tu veux l'activer.

    J'espère que ça t'aidera,
    Jean-Marc
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  4. #4
    Membre habitué
    Inscrit en
    Juin 2004
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 165
    Points : 136
    Points
    136
    Par défaut
    Je pense que je vais partir sur cette solution (je veux pas perdre trop de temps).
    Ce qui est dommage c'est que j'aurais aimé éviter d'avoir un rafraichissement de ma page.

    L'explication doit être simple, mais pourquoi sur mon postback les données de mon formulaire ne sont pas effacées alors qu'elles ont été saisies côté client ? (alors que mon activation/désactivation est perdue, elle)

    Merci

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut
    Probablement parce que le textbox dans lequel se trouve l'info à son EnableViewState à True, ce qui fait que l'info est gardée en dur dans la page, dans le ViewState (qui soit dit en passant parraît codé mais est assez facilement décodable. Donc pas de donnée sensible dans le ViewSate, à moins de le crypter toi-même).

    Par contre quand tu "joue" dans un outils via javascript, il n'est pas automatiquement mis à jour à tous les niveaux, ce qui est cependant faisable, mais qui demande un peu de code supplémentaire.

    En cherchant un peu sur google tu peux trouver pas mal de post qui en parlent et même des bouts de code utilisables si tu les modifies un peu selon tes besoins perso.

    Jean-Marc
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Salut,
    les remarques de Jean-Marc68 sont très judicieuses au niveau du viewstate, il faut vraiment avoir la maitrise des infos qu'on veut y passer (n'y mettre que ce qui est utile, non sensible et conforme à son mécanisme de sérialisation/désérialisation)

    Et j'avais notté aussi que si un élément est disabled = true (JS) ces données ne sont pas postés via le formulaire...Ce qui m'avait obligé de réactiver temporairement la liste, juste avant le postback, pour que la valeur soit postées .

    Puisque tu as un postBack au final, tu peux aussi utiliser la propriété "Enabled" du controle dans ton evenement qui génère une désactivation de l'élément.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/08/2005, 12h19
  2. Réponses: 7
    Dernier message: 04/07/2005, 22h39
  3. Réponses: 5
    Dernier message: 04/05/2005, 15h39
  4. Réponses: 7
    Dernier message: 24/01/2005, 11h36
  5. [Débutant]Quelques questions de principe sur l'API win32
    Par silver_dragoon dans le forum Windows
    Réponses: 4
    Dernier message: 19/03/2004, 18h38

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