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 :

[C# 2.0] Un Label ajouté disparaît qd je reload la page


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Par défaut [C# 2.0] Un Label ajouté disparaît qd je reload la page
    Bonjour à tous

    Voici ce que mon code fait :
    - au chargement de la page .aspx, il ajoute un label à "myDiv" (qui est un <div runat="server />)
    - qd j'appuie sur le bouton, le label disparaît. Or, je ne veux pas qu'il disparaisse...
    Voici mon code, très simple :
    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
      protected void Page_Load(object sender, EventArgs e)
      {
        if (!IsPostBack)
        {
          AddLabel();
        }
      }
     
      protected void myButton_Click(object sender, EventArgs e)
      {
     
      }
     
      private void AddLabel()
      {
        Label label = new Label();
        label.Text = "myLabel";
        myDiv.Controls.Add(label);
      }
    Comment puis-je faire pour que le label ajouté ne disparaisse pas qd j'appuie sur le bouton ?
    Merci beaucoup

  2. #2
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonsoir

    Voilà le code fautif :

    if (!isPostBack){}

    Au click de ton bouton, la page se recharge en PostBack et ne passe donc pas dans le if, ta fonction AddLabel() n'est pas appelée.

    Supprime ton if autour de AddLabel() .

    Bonne soirée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Par défaut
    Coucou

    Ah bin c'est fait exprès le if (!IsPostBack), sinon je ne l'aurais pas mis
    En fait, j'ai simplifié le problème en ajoutant un Label, mais il s'agit de rajouter un tas de Controls à partir de la base SQL... et je ne veux le faire qu'une seule fois, lors du 1er chargement de la page.
    Merci bien si t'as une autre idée

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Ok pour le postback()
    Donc si je comprend bien tu souhaites ne requêter qu'une fois pour remplir tes controls.
    Deux idées me viennent à l'esprit (il est tard ):

    -Essais quand tu créés tes controls, de mettre la propriété "enabledViewState" à "True" .

    -Sinon il faut distingué la requête SQL de ta création de controls. Tu effectue ta requête au premier chargement et stocke les données dans le viewstate. Dans un deuxieme temps tu extrait tes données et créé tes controls et ce, à chaque chargement. L'inconvénient ici, c'est la taille du viewstate si tu a beaucoup d'info et vu le charabia produit, ta page risque d'être un peu lourde.
    il est possible de remplacer viewstate par session mais je n'y vois pas d'utilité.

    Voilà deux idées "à la volée", théoriquement la première beaucoups plus optimisée que la suivante. A tester, désolé j'ai vraiment pas le temps là

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Par défaut
    Coucou

    1. j'avais déjà testé le EnableViewState=true, et ça ne marche pas mieux. D'ailleurs, c'est True par défaut.
    2. ça m'est venu à l'esprit de faire qqch un peu comme tu dis. Je pensais mettre tout le contenu du <div> (innerHTML) avec les Controls générés dans le ViewState, et à chaque rechargement remplir le contenu du <div> avec le ViewState. Mais c'est sale... asp.net ne gère pas ça par une fonctionnalité qui m'échappe ??

    Merci beaucoup pour ton aide en tt cas, et si t'as une autre idée, n'hésite pas

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonjour

    Juste pour savoir, quand tu dis "mes controls sont dans une base sql", c'est le control entier ou seulement sont contenu ?
    Cette question pour savoir si tu ne peux pas créer tes controls "en dur" dans ta page aspx et en chargeant leur contenu seulement au Load de la page, théoriquemement des controls présents au chargement de la page sont soumis au viewstate donc les modifications apportées a ceux-ci sont enregistrées au postback de la page. Cette solution me semble limitée mais peut etre répond-elle à ton problème.

    Sinon je sèche , j'ai jeté un coup d'oeil au fonctionnement du viewstate, mais vraisemblablement des controls insérés "à la volée " ne sont pas liés a celui-ci (enableViewstate=true ne change rien) .

    Sinon tu peux regarder du côté du cache mais je n'y connais strictement rien .

    Bonne Aprés midi

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 15/12/2008, 17h14
  2. [Conception] Après X ajout de données, créer des nouvelles pages
    Par Underschooler dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/03/2007, 15h00
  3. Ajouter un lien 'Forum' sur une page d'accueil
    Par raffa dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2006, 15h22
  4. ajout d'un tableau dans une page html après un clic
    Par jehlg dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 15/02/2006, 17h37

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