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 :

AutoCompleteExtender : Plusieurs usercontrol dans une page


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut AutoCompleteExtender : Plusieurs usercontrol dans une page
    Bonjour!

    J'ai créé un WebUserControl contenant un textbox et un composant ajaxToolkit:AutoCompleteExtender.
    Le WebUserControl fonctionne tres bien en utilisation seul. Il fonctionne aussi tres bien en edition dans un GridView.
    Mais j'ai un problème lorsque je veut afficher plusieur fois le WebUserControl.

    Le premier conflis a été une erreur javascript indiquant la presence sur la meme pages de deux id identique.
    Pour contourner ce probleme je redefinis dans chaque WebUserControl la valeur de la propriété "BehaviorID".

    Les deux composants marchent alors bien en l'absence des animations presentent dans mon composant ajaxToolkit:AutoCompleteExtender.
    En effet les animations recherche le composant selon le "BehaviorID" et celui-ci est defini en dur dans le code.

    Auriez vous une idée de la maniere a modifier le code pour qu'il prenne dynamiquement la bonne valeur de la propriété "BehaviorID" lors de la recherche du composant ajaxToolkit:AutoCompleteExtender?

    Merci

    Ci dessous 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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    <asp:TextBox ID="TextBoxPointRemarquable" runat="server" autocomplete="off" SkinID="skinLibelleLong" ToolTip="<%$ Resources:POINT_REMARQUABLE_TOOLTIP %>"></asp:TextBox>
    <ajaxToolkit:AutoCompleteExtender ID="AutoCompleteExtenderPointRemarquable"
                runat="server"
                BehaviorID="AutoCompleteEx"
                TargetControlID="TextBoxPointRemarquable" 
                ServiceMethod="GetListePointRemarquable" 
                ServicePath="~/WebServices/PointRemarquableWS.asmx"
                CompletionInterval="20"
                MinimumPrefixLength="2" 
                EnableCaching="true"
                CompletionSetCount="12" 
                UseContextKey="True" SkinID="green" 
                OnClientItemSelected="AutoCompleteExtenderPointRemarquable_ClientItemSelected">
                <Animations>
                    <OnShow>
                        <Sequence>
     
                            <OpacityAction Opacity="0" />
                            <HideAction Visible="true" />
     
     
                            <ScriptAction Script="
                                // Cache the size and setup the initial size
                                var behavior = $find('AutoCompleteEx');
                                if (!behavior._height) {
                                    var target = behavior.get_completionList();
                                    behavior._height = target.offsetHeight - 2;
                                    target.style.height = '0px';
                                }" />
     
     
                            <Parallel Duration=".4">
                                <FadeIn />
                                <Length PropertyKey="height" StartValue="0" EndValueScript="$find('AutoCompleteEx')._height" />
                            </Parallel>
                        </Sequence>
                    </OnShow>
                    <OnHide>
     
                        <Parallel Duration=".4">
                            <FadeOut />
                            <Length PropertyKey="height" StartValueScript="$find('AutoCompleteEx')._height" EndValue="0" />
                        </Parallel>
                    </OnHide></Animations>
     
        </ajaxToolkit:AutoCompleteExtender>
    <script type="text/javascript">
     
        $addHandler($get('<%=TextBoxPointRemarquable.ClientID%>'), 'keypress', function(){
            $get('<%=HiddenFieldIdPointRemarquable.ClientID %>').value = '';
            alert(GetBehaviorID());
        }); 
     
        $addHandler($get('<%=TextBoxPointRemarquable.ClientID%>'), 'keydown', function(sender, e){
            var keycode;
            if (window.event) keycode = window.event.keyCode;
            else if (e) keycode = e.which;
            if (keycode != 13 && keycode != 9)
            {
                $get('<%=HiddenFieldIdPointRemarquable.ClientID %>').value = '';
            }
        }); 
     
        var AutoCompleteExtenderPointRemarquable_ClientItemSelected = function(sender, e){
            $get('<%=HiddenFieldIdPointRemarquable.ClientID %>').value = e.get_value(); 
        }
     
    </script>
     
    <asp:HiddenField ID="HiddenFieldIdPointRemarquable" runat="server" />

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut
    J'ai en faite un deuxieme soucis :
    La valeur récupéré dans le champs "HiddenFieldIdPointRemarquable" par la methode "AutoCompleteExtenderPointRemarquable_ClientItemSelected" lors de la selection d'un item dans le premier WebUserControl se retrouve automatiquement dans le deuxieme.

    La valeur "HiddenFieldIdPointRemarquable.ClientID" semblant etre la meme pour les deux WebUserControls.

    Donc je recherche une solution pour gerer plusieurs instances d'un meme WebUserControl, contenant un composant ajax, dans une page aspx.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 4
    Par défaut
    Pour le 2eme "soucis" je viens de trouver une solution.
    Le problème viens du faite que la fonction appelé par "OnClientItemSelected" est la meme sur les différents WebuserControl ("AutoCompleteExtenderPointRemarquable_ClientItemSelected")

    Afin de remedier a ce problème j'ai rajouté une partie dynamique au nom de ma fonction dans sa définition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        var AutoCompleteExtenderPointRemarquable_ClientItemSelected<%=TextBoxPointRemarquable.ClientID %> = function(sender, e){
            $get('<%=HiddenFieldIdPointRemarquable.ClientID %>').value = e.get_value(); 
        }
    et lors du load de mon control je renome la fonction appelé de la meme facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        protected void Page_Load(object sender, EventArgs e)
        {
            AutoCompleteExtenderPointRemarquable.OnClientItemSelected = "AutoCompleteExtenderPointRemarquable_ClientItemSelected" + TextBoxPointRemarquable.ClientID;
        }
    Maintenant j'ai les bonnes valeurs dans chaque composant... reste le problème de l'animation et de la presence en dur du behaviorID que je n'arrive pas a mettre en dynamique...
    Avez vous des pistes de reflexions?

Discussions similaires

  1. Gérer plusieurs usercontrol dans une même page
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 07/07/2009, 16h14
  2. plusieurs formulaires dans une page
    Par momo79379 dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2008, 11h41
  3. [Struts-Layout] plusieurs datagrid dans une page jsp
    Par CaptainCyd dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/06/2007, 16h43
  4. Plusieurs forms dans une pages aspx
    Par nephhh dans le forum ASP.NET
    Réponses: 2
    Dernier message: 24/02/2007, 20h19
  5. [débutant] appeler plusieurs methodes dans une page html
    Par soulhouf dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/08/2005, 19h20

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