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 :

DropDownList Selectionchanged dans JavaScript ou Code-behind ?


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut DropDownList Selectionchanged dans JavaScript ou Code-behind ?
    Bonjour,

    Je voudrais lors du changement d'élément selectionné dans ma DropDownList, faire apparaitre ou pas un bloc selon ce qui a été selectionné.

    L'idéal serait de le faire en JS, mais j'avoue que je séche un peu.

    Ce que je fais pour l'instant c'est, ajouter la fonction JS à ma DDL, comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ddl_Make.Attributes.Add("OnSelectedIndexChanged", "selectChangeVisibleBloc(" + this.ddl_Make.SelectedValue + ",document.getElementById('" + li_Bloc1.ClientID + "'),document.getElementById('" + li_Bloc2.ClientID + "'))");
    la fonction JS est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function selectChangeVisibleBloc(valeur,bloc1,blocbloc2)
        {
                if(valeur == "MaValeur" )
                {
                        if(bloc1!=null){bloc1.style.display="block";}
                        if(blocbloc2!=null){blocbloc2.style.display="none";}
                }
                else
                {
                        if(bloc1!=null){bloc1.display="none";}
                        if(blocbloc2!=null){blocbloc2.style.display="block";}
                }
        }
    Le problème est que d'une part y a rien qui se passe quand je change de sélection ... D'autre part je suis pas sûre que ça fasse ce que je veux (puisque je charge au début l'élément sélectionné ...).

    Est ce que vous voyez qu'est ce qui ne vas pas ? Est ce que vous pensez que je suis sur la bonne voi ? Ou allors vaut mieux partir sur le code-behind ?

    Merci d'avance.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    581
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 581
    Par défaut
    Est ce que ce ne serait pas bcp plus simple, dans l'event SelectedIndexChanged =>


    Ton Bloc 1 . visible = false si ca sélectionné ou ton Bloc 2.visible = false si un autre truc sélectionné.

    Tes blocs peuvent être des div ou je ne sais pas quoi d'autres.

    Fix

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2004
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2004
    Messages : 417
    Par défaut
    a la place de onselectindexChanged dans le js met ->

    "onchange"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ex:
      ddl.Attributes.Add("onchange", "if (!confirm('Are you sure you want.....?'));");
    ca devrais le faire.

    Je pense que ton besoin peut bien se faire en js.

    Edit par rapport a Fix: Postback or not Postback telle est la question.

  4. #4
    CUCARACHA
    Invité(e)
    Par défaut AJAX et Autopostback
    Salut,

    Pourquoi ne pas utiliser Ajax, en ajoutant un autopostback à ta drop down et en traitant ton événement côté serveur ?

    ++

    Laurent

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par Laurent Jordi Voir le message
    Salut,

    Pourquoi ne pas utiliser Ajax, en ajoutant un autopostback à ta drop down et en traitant ton événement côté serveur ?

    ++

    Laurent
    J'y ai pensé au cas ou je ne trouvais pas comment le faire en JS, mais finalement it's ok !

    Merci à tous.
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Citation Envoyé par gyzmau Voir le message
    a la place de onselectindexChanged dans le js met ->

    "onchange"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ex:
      ddl.Attributes.Add("onchange", "if (!confirm('Are you sure you want.....?'));");
    ca devrais le faire.

    Je pense que ton besoin peut bien se faire en js.

    Edit par rapport a Fix: Postback or not Postback telle est la question.
    Merci beaucoup à toi, tu m'as mis sur la bonne voi.

    voici la solution finalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      ddl.Attributes.Add("onchange",  "selectChangeVisibleBloc(" + this.ddl_Make.ClientID + ",document.getElementById('" + li_Bloc1.ClientID + "'),document.getElementById('" + li_Bloc2.ClientID + "'))");
    la fonction JS

    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
    <script language="javascript" type="text/javascript">
        function selectChangeVisibleBloc(ddl, li_Bloc1, li_Bloc2)
        {
                var valeur = ddl[ddl.selectedIndex].value;
                if(valeur == "MaValeur" )
                {
                        if(li_Bloc1!=null){li_Bloc1.style.display="block";}
                        if(li_Bloc2!=null){li_Bloc2.style.display="none";}
                }
                else
                {
                        if(li_Bloc1!=null){li_Bloc1.style.display="none";}
                        if(li_Bloc2!=null){li_Bloc2.style.display="block";}
     
                }
        }
        </script>
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

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

Discussions similaires

  1. Appellé une fonction javascript en code behind
    Par 0xYg3n3 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/10/2007, 15h02
  2. JavaScript en code-behind
    Par jf1985 dans le forum C#
    Réponses: 2
    Dernier message: 22/09/2007, 21h33
  3. [tout bête] JavaScript en code behind
    Par dahu17 dans le forum C#
    Réponses: 1
    Dernier message: 06/09/2007, 15h28
  4. Google Map API --> Javascript et code behind C#
    Par bridel dans le forum ASP.NET
    Réponses: 2
    Dernier message: 22/01/2007, 21h07
  5. [VB.NET]Javascript et code behind
    Par Dadou74 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/11/2006, 16h30

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