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 :

OnChange sur un DropDownList


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 378
    Par défaut OnChange sur un DropDownList
    Bonjour,
    J'ai trouvé cette réponse sur le faq
    L'erreur la plus fréquente est d'oublier de mettre à true la propriété AutoPostBack. Ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:DropDownList runat=server id=IdDdl AutoPostBack=true>...</asp:DropDownList>
    Si la propriété est à true, lorsque l'on sélectionne une autre valeur, la page est renvoyée au serveur.

    Attention de ne pas réinitialiser la valeur sélectionnée dans le Page_Load.
    Le code marche, mais malheuresement on renvoi toute la page, en faite je veux seulement remplir un autre DropDownList, comment peut on faire ça sans renvoyer toute la page?
    Merci

  2. #2
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,

    Dans ce cas, tu peux utiliser le web server control UpdatePanel dans lequel tu définit le DDL. Avec l'UpdatePanel, tu peux renvoyer vers le serveur seulement une partie de la page.

    a+

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    Comme l'a dit "Ramajb", il faut effectivement utilier un UpdatePanel pour faire ce dont tu as besoin.

    Voici un tutorial intéressant qui va te montrer comment implémenter cette fonctionnalité : http://www.singingeels.com/Articles/...With_AJAX.aspx
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 378
    Par défaut
    Bonsoir,
    Merci pour vos réponse, mais j'ai tout fait mais toujours c'est toute la page est renvoyée voila 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
     
                <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="True"/>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
    <table width="490" border="0" align="center" class="StyleTableau">
      <tr>
        <td width="52">Marque</td>
        <td width="178">
     
     
     
            <asp:DropDownList ID="txtMarque" runat="server" DataSourceID="SDSM" DataTextField="Marque" DataValueField="Marque" AutoPostBack="True">
            </asp:DropDownList>&nbsp;
     
        </td>
        <td width="51">Modèle&nbsp;</td>
        <td width="196">
     
     
            <asp:DropDownList ID="TxtModele" runat="server" DataTextField="Modele"
                DataValueField="Modele">
            </asp:DropDownList>
     
        </td>
      </tr>
      <tr>
        <td>Energie&nbsp;</td>
        <td>
            <asp:DropDownList ID="txtEnergie" runat="server" DataSourceID="SDSE" DataTextField="Energie"
                DataValueField="Energie">
            </asp:DropDownList>
        </td>
        <td>Région&nbsp;</td>
        <td>
            <asp:DropDownList ID="txtRegion" runat="server" DataSourceID="SDSV" DataTextField="Ville"
                DataValueField="Ville">
            </asp:DropDownList>
        </td>
      </tr>
      <tr>
        <td style="height: 21px"><div align="right"></div></td>
        <td style="height: 21px"><div align="right"></div></td>
        <td style="height: 21px"><div align="right"></div></td>
        <td style="height: 21px" align="right">
            <asp:Button ID="CmdOk" runat="server" Text="Recherche" /></td>
      </tr>
    </table>
    </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="txtMarque" EventName="SelectedIndexChanged" />
        </Triggers>
    </asp:UpdatePanel>
    je ne sais pas l'erreur que j'ai fait dans ce code merci.

  5. #5
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <asp:DropDownList ID="txtMarque" runat="server" DataSourceID="SDSM" DataTextField="Marque" DataValueField="Marque" OnSelectedIndexChanged="txtMarque_SelectedIndexChanged">
            </asp:DropDownList>
    Premièrement, il faut définir l’événement 'OnSelectedIndexChanged' du DDL vu que c'est le gestionnaire d’événement qui sera traité lors du postback asynchrone.
    Secundo, tu enlèves sa propriete AutoPostBack="True".(avec ça tu charges la page entière, d’où ton problème). Tu n'a plus besoin de faire ça car justement c'est le rôle de l'updatePanel, sauf qu'il fait le postback de façon asynchrone.

    J’espère t'avoir aidé.

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 378
    Par défaut
    Quand je met AutoPostBack=False et j'ajoute OnSelectedIndexChanged="txtMarque_SelectedIndexChanged"
    aucune evenement n'est declancher.

  7. #7
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut,
    J'ai complètement raté le topic . Faut pas enlever AutopostBack="true".

  8. #8
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 378
    Par défaut
    Bonjour,
    Toujours ça marche pas voila j'ai attaché un exemple, peut etre vous allez me courriger mon erreur.
    Fichiers attachés Fichiers attachés

  9. #9
    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
    Bonjour,

    Je sais pas comment tu as créé ton projet mais je te conseil d'utiliser les projet "Ajax web site" qui te configure tout ce qu'il faut pour l'ajaxcontrotoolkit.

    Sinon il manque les httpHandler et Httpmodule qui vont bien dans ton web.config:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <system.web>
    <httpHandlers>
    			<remove verb="*" path="*.asmx"/>
    			<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    			<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    			<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    		</httpHandlers>
    		<httpModules>
    			<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    		</httpModules>
    </system.web>
    Avec IE tu remarquera que tu as une erreur javascript.
    Personnellement j'utilise Firefox avec fireBug qui montre dans ton cas que le namesapce Sys n'est pas trouvé qui est assez caracterisitique.

  10. #10
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 378
    Par défaut
    Bonjour,
    Je developpe mon projet avec Microsoft Visual Studio 2005

  11. #11
    Membre émérite Avatar de Ramajb
    Homme Profil pro
    ----------------------------
    Inscrit en
    Septembre 2007
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ----------------------------

    Informations forums :
    Inscription : Septembre 2007
    Messages : 476
    Par défaut
    Salut, pour s'assurer que tout marche bien sur ta machine, créer un nouveau projet web app, et ajouter le code suivant dans form:
    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
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:DropDownList ID="ddl1" runat="server"  AutoPostBack="true" OnSelectedIndexChanged="ddl1_SelectedIndexChanged">
                <asp:ListItem Text="1" Value="1"></asp:ListItem>
                <asp:ListItem Text="2" Value="2"></asp:ListItem>            
    </asp:DropDownList>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
              <ContentTemplate>            
                <asp:DropDownList ID="ddl_ville" runat="server" EnableViewState="false">               
                </asp:DropDownList>
              </ContentTemplate>
              <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ddl1" EventName="SelectedIndexChanged" />
              </Triggers>
    </asp:UpdatePanel>
    Code behind
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
            {
                ddl_ville.Items.Clear();
                if (ddl1.SelectedValue == "1")
                {
                    ddl_ville.Items.Add("Paris");
                    ddl_ville.Items.Add("Marseille");
                }
                else
                {                
                    ddl_ville.Items.Add("Madrid");
                    ddl_ville.Items.Add("Barcelone");
                }
            }
    Tiens nous au courant du résultat, normalement ça devrait marcher.

    a+

  12. #12
    Membre éclairé
    Inscrit en
    Mai 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 378
    Par défaut
    Bonsoir,
    Merci à vous tous, ça marche tres tres bien.

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

Discussions similaires

  1. Réponses: 22
    Dernier message: 31/05/2006, 20h11
  2. [VB.NET] Probleme sur une DropDownList
    Par xG-Hannibal dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/01/2006, 11h08
  3. [Onchange] sur checkbox selection ds une liste deroulante
    Par maxxou dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/01/2006, 00h17
  4. onChange sur Checkbox prob IE vs FireFox
    Par Teufboy dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/11/2005, 09h02
  5. Gestion OnChange sur une sorte d'éditeur de propriétés
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 29/09/2004, 09h59

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