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 :

[ASP.NET][AJAX] Probl�me UpdatePanel /Click


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
    Juin 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par d�faut [ASP.NET][AJAX] Probl�me UpdatePanel /Click
    Bonjour � tous,

    Je travaille sur un webform devant g�rer l'ajax.
    Ce composant contient un UpdatePanel lui m�me contenant un ensemble de composants graphiques. La r�partition est la suivante : chaque ligne du webcontrol contient un bouton et un literalcontrol

    Cette liste de composants est cr�� � partir d'une m�thode.

    Dans la m�thode Init(), j'ajoute l'UpdatePanel dans le webcontrol et je fais appelle � la m�thode servant � cr��r la liste des composants graphiques.

    dans la m�thode CreateChildControls, je fais un foreach sur ma liste et je cr�� les composants graphiques que j'ajoute dans l'UpdatePanel. Lorsque je cr�� le bouton j'ajoute un �v�nement Click. Dans cette m�thode, je rajoute un composant graphique dans l'UpdatePanel.


    Le probl�me est que lorsque je d�ploie le webcontrol sur une page, la bouton ne fait pas ce que je lui demande.

    Je pr�cise que j'ai bien install� les extensions asp.NET/Ajax sur mon serveur IIS 6 et que ma master page a bien un scriptmanager d'instanci�.

    Merci de votre aide

    Loic

  2. #2
    Membre exp�riment� Avatar de gwadakillah
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Par d�faut
    peux tu montrer ton code?

  3. #3
    Membre chevronn�
    Inscrit en
    Octobre 2005
    Messages
    400
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par d�faut
    � tu d�finit le control ID de ton trigger ?


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="idControl" EventName="Click" />
        </Triggers>

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par d�faut
    Pour commencer voici mon code :

    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
     
     
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
                this.Controls.Add(_up);
                CreateList();
            }
     
            private void CreateList()
            {
                _list.Add("element 1");
                _list.Add("element 2");
                _list.Add("element 3");
                _list.Add("element 4");
                _list.Add("element 5");
     
            }
     
            protected override void CreateChildControls()
            {
                base.CreateChildControls();
     
                foreach (string nom in List)
                {
                    Button bt = new Button();
                    bt.Text = "+";
                    bt.Click += new EventHandler(bt_Click);
                    _up.ContentTemplateContainer.Controls.Add(bt);
                    AsyncPostBackTrigger trigger = new AsyncPostBackTrigger();
                    trigger.ControlID = bt.UniqueID;
                    trigger.EventName = "Click";
                    _up.Triggers.Add(trigger);
     
                    LiteralControl elt = new LiteralControl();
                    elt.Text = nom + "<br/>";
                    _up.ContentTemplateContainer.Controls.Add(elt);
     
                }
            }
     
            void bt_Click(object sender, EventArgs e)
            {
                _up.ContentTemplateContainer.Controls.Add(new LiteralControl("ajout !!</br>"));
            }
    Pour information mon fichier web.config est bien param�tr� (sinon je n'aurais jamais pu afficher ma page :p)

    Le webcontrol je le met dans un page layout et le script manager est dans la masterpage

  5. #5
    Membre exp�riment� Avatar de gwadakillah
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2005
    Messages
    235
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 235
    Par d�faut
    ce que je ne comprends pas, c'est quel interet as tu de mettre tes controles dynamiquement ?

  6. #6
    Membre chevronn�
    Inscrit en
    Octobre 2005
    Messages
    400
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par d�faut
    Au lieu de

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    trigger.ControlID = bt.UniqueID;

    Essai

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    trigger.ControlID = bt.ID;
    les deux propri�t� ne te renvoi pas la m�me valeur...

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par d�faut
    Oui c'est vrai que l'exemple n'est pas tr�s parlant.

    Admettont maintenant l'archi suivante :
    - d'un cot� un serveur web
    - de l'autre une base de donn�es

    La page contenant le control est bien entendu sur le serveur web.
    Sur la base de donn�e, une structure hi�rarchique comme un menu est stock�.
    Lors du premier appel de la page, je demande au serveur BD de me r�cup�rer la structure hi�rarchique non pas enti�re mais partielle. Pour chaque noeuds entre le root et le noeud actuel, je r�cupere les fils. A partir de l�, je cr�� une liste ordonn�e qui me permettra d'afficher un menu sous la forme d'un tableau (pour information je travaille sous sharepoint et les tableaux sont mieux g�r�s que les CSS).
    Pour conclure sur le premier appel, j'ai une liste d'affich�e qui contient un bouton et un label.

    Lorsque je clique sur le bouton + devant "element 1" (cf code) je veux r�cup�rer les sous noeuds de element 1 contenus dans la structure hierarchique cot� serveur.

    J'esp�re avoir �t� clair et si c'est pas le cas n'h�sitez � me demander des pr�cisions.

    Merci.

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par d�faut
    En fait le probleme ne doit pas venir de l'ajax mais de l'asp.

    J'ai une question concernant les WebControl.

    Lorsque l'on execute une page la premiere fois, le WebControl va executer les m�thodes OnInit(), OnLoad() et CreateChilNodes().

    Lorsque je clique sur un des boutons, la m�thode va cr�er un label dans le webcontrol mais, rien ne se passe... ou plutot, un post back est effectu� ce qui recharge le webcontrol sans rien ajouter

    Pourquoi? Serait il possible qu'au post back le controle soit recharg� en r�executant les m�thodes OnInit(), OnLoad() et CreateChilNodes()?
    Dans ce cas il est normal que je ne vois jamais apparaitre les composants ajout�s par le clic du bouton... :'(

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par d�faut
    Avec ce code tout simple en asp, le composant ne se voit jamais ajout� d'�l�ments en plus car il repasse par les cases OnLoad et OnInit. Remarquez, je suis complement nioub en ASP.NET donc peut �tre que je suis completement parti en vrille d�s le d�part et peut �tre que ce que je veux faire est impossible


    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
     
     
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Web.UI.WebControls;
    using System.Collections;
    using System.Web.UI;
     
    namespace ClassLibrary2
    {
        public class Class1 : WebControl
        {
            private ArrayList _list = new ArrayList();
     
            public ArrayList List
            {
                get { return _list; }
                set { _list = value; }
            }
     
     
            protected override void OnInit(EventArgs e)
            {
                base.OnInit(e);
            }
     
            protected override void CreateChildControls()
            {
                base.CreateChildControls();
     
                foreach (string nom in List)
                {
                    Button bt = new Button();
                    bt.Text = "+";
                    bt.Click += new EventHandler(bt_Click);
                    this.Controls.Add(bt);
     
                    LiteralControl elt = new LiteralControl();
                    elt.Text = nom + "<br/>";
                    this.Controls.Add(elt);
     
                }
            }
     
            void bt_Click(object sender, EventArgs e)
            {
                _list.Add("element 1");
            }
        }
    }

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Juin 2005
    Messages : 135
    Par d�faut
    Petit up pour mon sujet.

    EN fait j'ai comme l'impression que vous n'avez pa compris mon probleme donc je vais essayer de le reformuler.


    Dans ma page asp .NET j'ai un WebControl.

    Dans la version sans ajax j'ai cr�� une liste de LiteralControl qui est d�pendante du noeud de navigation courant (PortalSiteMapNode : navigation sous MOSS 2007).

    Dans la version ajax, je voudrais ajouter devant ces LiteralControl un bouton permettant d'afficher les fils du noeud cliqu� ou les cacher.

    En gros je pense que vous avez compris que je veux recr�er le comportement du Treeview. Or, mes ordres sont clairs et c'est l� que se pose le probl�me... On ne veut pas rapatrier entierement la navigation d'un coup mais juste ce que l'on a besoin.

    Dans l'UpdatePanel j'essaie donc de g�n�rer la liste des literalcontrols.
    �a marche au premier appel mais lorsque je clique sur l'un des bouton, le webcontrol relance les m�thodes oninit(), onload(), createchildnodes()... et donc mon control affiche la meme chose qu'avant...

    �a me les brises depuis plus d'une semaine donc si quelqu'un peut me venir en aiiidddeee

    merci

  11. #11
    Membre chevronn�
    Inscrit en
    Octobre 2005
    Messages
    400
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Par d�faut
    Dans ton m�thode Page_Load tu doit initialiser ton treeView uniquement si la propri�t� IsPostBack est positionn� � false


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    if(!Page.IsPostBack)
    {
    //initialisation du TreeView
    }
    else
    {
    ...
    }

Discussions similaires

  1. R�ponses: 8
    Dernier message: 28/05/2009, 10h40
  2. R�ponses: 0
    Dernier message: 06/02/2009, 20h20
  3. [ASP.NET AJAX] FilteredTextBox probl�me
    Par ronando dans le forum ASP.NET
    R�ponses: 1
    Dernier message: 27/11/2007, 15h08
  4. ASP AJAX (probl�me UpdatePanel)
    Par Christophe@prog dans le forum ASP.NET
    R�ponses: 2
    Dernier message: 16/07/2007, 15h25
  5. R�ponses: 4
    Dernier message: 27/06/2007, 09h13

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