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 :

Question sur UpdatePanel (erreur débutant qq part)


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 45
    Par défaut Question sur UpdatePanel (erreur débutant qq part)
    Bonjour,

    Je cherche à utiliser un UpdatePanel, avec un trigger. Cependant j'ai l'impression que tout ne se passe pas comme il faut.

    Dans WDS 2008, j'ai débugué le code suivant, et bizarrement l'évènement "Load" du 1er UpdatePanel est appelé quand je clique sur son bouton, mais son résultat d'exécution (mise à jour sur l'IHM) ne se produit pas. C'est pas logique, il ne devrait pas y avoir d'appel de rafraîchissement de ce panel, uniquement de l'autre par le trigger mis en place (et qui fonctionne bien).

    Si je commente le code de "Load" pour le panneau 1, le code sur "click" du bouton de panneau 1 n'a pas d'impact visuel même si on passe dedans.

    Pouvez-vous m'aider à voir ce qui est incorrect ? Je me suis documentée et ai téléchargé des exemples de mise à jour conditionnelle de panneaux, ils n'ont pas ce comportement en mode debug. J'ai fait une boulette quelque part...

    Merci,

    Barbara

    Code : 1er panneau avec un bouton, 2e avec un champ texte. Le clic sur le bouton met à jour le texte du 2e panneau et ne devrait faire que cela.

    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
     
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
        </asp:ScriptManager>
        <div>
        <table><tr>
        <td id="td1">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" OnLoad="UpdatePanel1_Load" ChildrenAsTriggers="false">
            <ContentTemplate>
                <asp:Button runat="server" ID="u4b1" OnClick="u4b1_Click" />
                <asp:PlaceHolder runat="server" ID="pl1"></asp:PlaceHolder>
            </ContentTemplate>
            <Triggers>
     
           </Triggers>
           </asp:UpdatePanel></td>
        <td id="td4">
        <asp:UpdatePanel ID="UpdatePanel4" runat="server" UpdateMode="Conditional" OnLoad="UpdatePanel4_Load">
            <ContentTemplate>
                <asp:TextBox ID="TB4" runat="server"  Width="250"/> 
     
            </ContentTemplate>
            <Triggers>
     
            <asp:AsyncPostBackTrigger ControlID="u4b1" EventName="Click" />
            </Triggers>
           </asp:UpdatePanel></td>
        </tr></table>
        <asp:TextBox ID="Msg" runat="server"  Width="250"/> 
     
        </div>
        </form>
    La méthode "Load" du 1er panneau rafraichit le champ texte situé sous celui-ci et ajoute un label dans ce 1er panneau.

    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 _Simple : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
     
     
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
     
        }
     
        protected void UpdatePanel4_Load(Object sender, EventArgs e)
        {
           TB4.Text = "panel 4 loaded at " + DateTime.Now.ToString();
        }
     
        protected void UpdatePanel1_Load(Object sender, EventArgs e)
        {
            Msg.Text = "panel 1 loaded at " + DateTime.Now.ToString();
            addNewLabelPanel1();
        }
     
        protected void u4b1_Click(Object sender, EventArgs e)
        {
            Msg.Text = "clic sur bouton u4b1 à " + DateTime.Now.ToString();
        }
     
        protected void addNewLabelPanel1()
        {
            Label l1 = new Label();
            String z = "" + new Random().Next(100);
            l1.ID = z;
            l1.Text = z;
            pl1.Controls.Add(l1);
            pl1.Controls.Add(new HtmlGenericControl("br"));
        }
    }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 45
    Par défaut
    Après réflexion je pense que c'est le comportement normal :
    - on passe par toutes les méthodes "Load"
    - seules celles qui concernent le ou les update panels destinataires du trigger voient leur code avoir un impact sur l'IHM
    - mon TextBox hors de l'update panel ne peut pas être rafraichi avec un évènement car il est côté serveur donc je ne peux le modifier que s'il est dans un update panel ou par un javascript client.

    Merci de confirmer, que je close ce post

    Barbara

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 19
    Par défaut
    j'avais pas fait gaffe que le textbox était a l'exterieur
    et effectivement c'est normal qu'il n'affiche pas la nouvelle valeur il doit être dans un updatepanel

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2002
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2002
    Messages : 45
    Par défaut
    OK, mais ça me paraît bizarre de passer par les méthodes Load de tous les update panels. Imaginons qu'elles soient un peu longues...

    Quand j'ai exécuté en mode debug un exemple téléchargé ça passait bien par tous les "Load", contrairement à ce que j'ai dit dans le 1er post.

  5. #5
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 19
    Par défaut
    effectivement c'est "normal" qu'il passe par tous les load et c'est d'ailleur genant qd on utilise des effet visuel de chargement sur plusieur update panel ...

Discussions similaires

  1. Aide question sur programmation python débutant
    Par LoloB12 dans le forum Général Python
    Réponses: 2
    Dernier message: 02/01/2015, 13h21
  2. Question sur l'héritage (débutant en C++)
    Par beegees dans le forum C++
    Réponses: 19
    Dernier message: 30/03/2008, 14h45
  3. [MySQL] Petite question sur une erreur de mysql
    Par iwf-fr dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/12/2006, 16h23
  4. Question sur X11 - Xlib - Débutant
    Par bsp_epoto dans le forum Linux
    Réponses: 1
    Dernier message: 26/07/2006, 18h02
  5. question sur les erreurs de compilation
    Par vince3320 dans le forum C
    Réponses: 5
    Dernier message: 19/04/2004, 11h34

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