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 :

Update Panel - question de fond


Sujet :

ASP.NET

  1. #1
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut Update Panel - question de fond
    Bonjour a tous,

    Je viens de me rendre compte de quelque chose d'absoluement pas surprenant mais dont j'aimerais avoir quelques avis eclairés.

    J'utilise un update panel Ajax et je me demande si la reaction a un clic de bouton a l'interieur etait conditionné par l'ensemble du code ou seulement par les fonctions appellées.

    Je met donc un alert() dans le page load.
    je clique dans mon update panel et ca execute l'alert() du page load.
    --> bon c'est pas tres surprenant mais, je l'avais pas a l'esprit...

    du coup je me demande si en changeant une propriété visible d'un objet a l'exterieur de l'update panel dans le page load ca allais changer les données et laisser tel quel l'affichage.
    Bingo!
    je recapitule:
    - je clique et demande de rendre invisible un label a l'exterieur de l'update panel
    - mon update panel s'update et mon label a l'exterieur reste identique (visible)
    - je fais un postback
    - et la mon label a disparu

    du coup:
    - 1: Je me rend compte que l'update panel c'est juste un filtre de mise a jour de l'affichage
    - 2: je me rend compte qu'on a interet a optimiser grave le code
    - 3: Je me demande par ou commencer pour optimiser mon code.

    je prend TOUTE les remarques!

  2. #2
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    L'utilité d'ajax est jsutement d'eviter de recharger tout la page mais seulement des parties de page...

    alors si tu interagit avec un controle a l'exterieur de la page, il ne se passera rien.. --> normal car asp.net as besoin de regénérer la page pour qu'il soit pris en compte...

    ce que tu peux faire c'est inclure ton label dans l'updatepanel..

    sinon tu peux aussi utiliser plusieurs updatepanel et déclancher l'update des uns en fonction des autres (j'imagine que ca doit etre possible.. jamais testé)

    en espérant t avoir aidé

  3. #3
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    nan désolé mais t'a pas compris (ou plutot j'ai pas été clair!)

    L'utilité d'ajax est jsutement d'eviter de recharger tout la page mais seulement des parties de page...
    Je me suis justement rendu compte qu'Ajax recharge TOUTE la page mais n'en affiche qu'une partie...

    la nuance est vraiment fondamentale!

    si j'ai mis le label a l'exterieur c'est justement pour verifier l'action de l'update panel dessus (un postback et on verifie que le Viewstate a bien ete modifié)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Essaye avec un treeview de 10 branches, chacune possédant 1000 enfants : tu verra les choses autrement

  5. #5
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    bon, je crois que je suis VRAIEMENT pas clair...

    justement avec un treeview de 10 branches avec 1000 enfants crées dynamiquemment, ce que je suis en train de dire c'est que si t'a un update panel a coté et que tu clique dessus ca recreera a chaque clic tes 10 branches avec 1000 enfants...
    ... mais sans l'afficher!

    ca choque personne ou personne m'a compris?

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Ben je vois pas le problème...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    page_load(..)
    {
    if ( !IsPostBack )
    {
    FillControls(); // tu remplis ton treeview
    }
    }
     
    eventX_click(..)
    {
    this.truc.text = "blabla";
    }
    Il ne créera le treeview que si aucun postback n'est effectué. Un click dans l'updatePanel est un postback effectué via AJAX.

    Moi je dis que tu essayes de te prendre la tête pour rien


    [edit] grblbl j'ai merdé moi meme quelque part, je test...

  7. #7
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    d'ac avec ton code.
    d'ac avec le fait que je me prenne la tete...
    ... mais pas pour rien!

    pcq j'ai du page_init(), des portions de code Load() sur des controles et pas mal de code dynamique... du coup je me passerais bien de les reexecuter a chaque postback Ajax...

    du moins j'avais pas tilté que ca y passait a chaque fois.

    je pensais meme inocement au debut que la zone de l'update panel etait la seule zone d'echange de données, la seule zone ou etait maj le viewstate, comme une page dans la page

  8. #8
    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
    Points : 8 734
    Points
    8 734
    Par défaut
    Si tu mets , t'auras pas de pb non?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Humph, c'est balo... J'ai moi meme un probleme avec ce isPostBack et mon treeview...

    D'habitude je remplis mes control si ce n'est pas un postback, puis si l'utilisateur effectue une demande dans l'UpdatePanel, je met a jour un/des control...
    Mais pour cet exemple de treeview et de postback, je viens de m'apercevoir que j'avais enlevé le test... Je le remplis dynamiquement dans son tree_init... Mais si j'insère le test il n'est pas conservé lors du déploiement d'une node... Le TreeView s'efface..
    Well, je me retrouve avec une propre question...

  10. #10
    Membre régulier Avatar de igorzup
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 307
    Points : 107
    Points
    107
    Par défaut
    bah c'est logique!

    c'est exactement ce que j'ai ecris avec un treeview au lieu d'un label (et aussi que le mien etait plus visible et que ton treeview se remplis...)

    cliquer sur une zone de l'update panel c'est identique niveau code a cliquer a l'exterieur, ya que l'affichage qui change mais les données derriere elle, sont completement differentes...

    si tu remplis ton controle en code behind, le viewstate n'en a pas connaissance et du coup, c'est perdu au postback.
    2 consequences:
    - si ton treeview est a l'exterieur de l'update panel il reste visible a un postback dans l'updatepanel
    - visible oui mais, il existe plus apres un postback dans ton update panel (vu qu'il est pas repassé par l'etape de creation)

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/10/2007, 21h21
  2. valeur mise a jour dans un update panel
    Par kazoumoulox dans le forum ASP.NET
    Réponses: 3
    Dernier message: 08/08/2007, 14h51
  3. [AJAX] performances fortement diminuées avec un Update panel (et IE)?
    Par cortex024 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/06/2007, 13h40
  4. ASP 2.0 Ajax Update Panel & Trigger
    Par chnew dans le forum ASP.NET
    Réponses: 1
    Dernier message: 22/06/2007, 15h16
  5. Question de fond : Composant ou pas Composant ?
    Par waterbed dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 3
    Dernier message: 23/06/2006, 19h46

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