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 :

AutoPostBack ne veux pas fonctionner avec mon DropDownList


Sujet :

ASP.NET

  1. #1
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut AutoPostBack ne veux pas fonctionner avec mon DropDownList
    Bonjour,

    Je fais face à un problème que je n'arrive pas à comprendre.

    Si je crée une page "Text.aspx" avec dedans :
    Code html : 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
     
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
     
    <!DOCTYPE html>
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            List 1 : <asp:DropDownList ID="List1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="List1_SelectedIndexChanged" /><br />
            List 2 : <asp:DropDownList ID="List2" runat="server" AutoPostBack="true" /><br />
        </form>
    </body>
    </html>

    Code csharp : 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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class Test : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List1.Items.Add("");
                List1.Items.Add(new ListItem("Element 1", "1"));
                List1.Items.Add(new ListItem("Element 2", "2"));
                List1.Items.Add(new ListItem("Element 3", "3"));
                List1.Items.Add(new ListItem("Element 4", "4"));
            }
        }
     
        protected void List1_SelectedIndexChanged(object sender, EventArgs e)
        {
            List2.Items.Clear();
     
            switch (List1.SelectedValue)
            {
                case "1":
                    List2.Items.Add(new ListItem("Element 1.1", "1.1"));
                    List2.Items.Add(new ListItem("Element 1.2", "1.2"));
                    break;
                case "2":
                    List2.Items.Add(new ListItem("Element 2.1", "2.1"));
                    List2.Items.Add(new ListItem("Element 2.2", "2.2"));
                    List2.Items.Add(new ListItem("Element 2.3", "2.3"));
                    List2.Items.Add(new ListItem("Element 2.4", "2.4"));
                    break;
                case "3":
                    List2.Items.Add(new ListItem("Element 3.1", "3.1"));
                    break;
                case "4":
                    break;
                default:
                    List2.Items.Add("Choisissez Liste 1");
                    break;
            }
        }
    }

    Lorsque je sélectionne un élément dans la première liste, tout va bien, la page de recharge avec la seconde liste peuplée.

    Maintenant, j'ai une MasterPage :
    Code html : 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
     
    <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="Masters_MasterPage" %>
    <!DOCTYPE html>
    <html>
        <head runat="server">
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
            <title>Plannis</title>
            <link href="~/styles/main.css" rel="stylesheet" type="text/css" />
            <link href="~/styles/topmenu.css" rel="stylesheet" type="text/css" />
            <link href="~/styles/mainmenu.css" rel="stylesheet" type="text/css" />
            <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/JavaScripts/common.js") %>"></script>
            <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/JavaScripts/calendar.js") %>"></script>
            <script type="text/javascript" src="<%= Page.ResolveClientUrl("~/JavaScripts/datetimeselector.js") %>"></script>
            <asp:ContentPlaceHolder id="Head" runat="server">
            </asp:ContentPlaceHolder>
        </head>
        <body>
            <form id="form1" runat="server">
                <menu:MainMenu ID="MainMenu1" runat="server" />
                <menu:TopMenu ID="TopMenu1" runat="server" />
                <div id="maincontainer">
                    <asp:ContentPlaceHolder id="PageContainer" runat="server" />
                </div>
            </form>
        </body>
    </html>

    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class Masters_MasterPage : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
     
        }
    }

    Ainsi qu'une classe de base pour gérer aisément un contexte applicatif :
    PlannisPage.cs
    Code csharp : 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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web;
    using System.Web.UI;
     
    /// <summary>
    /// Description résumée de PlannisPage
    /// </summary>
    public abstract class PlannisPage : Page
    {
        public PlannisContext PlannisContext = null;
     
        protected abstract bool MustAuthenticated();
     
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
     
            PlannisContext = new PlannisContext();
     
            if (PlannisContext.LoginUser == null && MustAuthenticated())
            {
                Logger.Instance.LogMessage("PlannisPage", Logger.ErrorLevel.Error, $"Tentative d'accès à la page {Page.Title} sans être loggé !");
                Response.Redirect("~/Connection/Login.aspx");
                return;
            }
        }
    }


    Et donc ma page de test est modifiée en conséquence :

    Test.aspx :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <%@ Page Title="Plannis - Mes tickets" Language="C#" MasterPageFile="~/Masters/MasterPage.master" AutoEventWireup="true" CodeFile="Test.aspx.cs" Inherits="Test" %>
    <asp:Content ID="Content1" ContentPlaceHolderID="Head" Runat="Server">
    </asp:Content>
    <asp:Content ID="Content2" ContentPlaceHolderID="PageContainer" Runat="Server">
        <div class="tuile large">
            List 1 : <asp:DropDownList ID="List1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="List1_SelectedIndexChanged" /><br />
            List 2 : <asp:DropDownList ID="List2" runat="server" AutoPostBack="true" /><br />
        </div>
    </asp:Content>

    Code csharp : 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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class Test : PlannisPage
    {
        protected override bool MustAuthenticated()
        {
            return false;
        }
     
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List1.Items.Add("");
                List1.Items.Add(new ListItem("Element 1", "1"));
                List1.Items.Add(new ListItem("Element 2", "2"));
                List1.Items.Add(new ListItem("Element 3", "3"));
                List1.Items.Add(new ListItem("Element 4", "4"));
            }
        }
     
        protected void List1_SelectedIndexChanged(object sender, EventArgs e)
        {
            List2.Items.Clear();
     
            switch (List1.SelectedValue)
            {
                case "1":
                    List2.Items.Add(new ListItem("Element 1.1", "1.1"));
                    List2.Items.Add(new ListItem("Element 1.2", "1.2"));
                    break;
                case "2":
                    List2.Items.Add(new ListItem("Element 2.1", "2.1"));
                    List2.Items.Add(new ListItem("Element 2.2", "2.2"));
                    List2.Items.Add(new ListItem("Element 2.3", "2.3"));
                    List2.Items.Add(new ListItem("Element 2.4", "2.4"));
                    break;
                case "3":
                    List2.Items.Add(new ListItem("Element 3.1", "3.1"));
                    break;
                case "4":
                    break;
                default:
                    List2.Items.Add("Choisissez Liste 1");
                    break;
            }
        }
    }

    Et pof ! Ca ne fonctionne plus. Le AutoPostBack ne déclenche plus rien !

    Comment résoudre mon souci ? Je n'arrive même pas à comprendre pourquoi ça ne fonctionne plus.
    Aucune erreur côté .NET pas plus que dans le debugger JS.
    On ne jouit bien que de ce qu’on partage.

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Ok.

    J'ai trouvé ce qui déconne…

    Parmi les javascripts que ma page master appelle, l'un d'eux fait :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    window.setTimeout = function (func, interval) {
        // Do nothing
    };

    Ceci afin de neutraliser un comportement d'un composant que j'utilise et dont je n'ai pas le code source.

    Il me reste plus qu'à trouver comment faire sauter le traitement en question d'une autre manière

    PS : En revanche, je ne comprends absolument pas le lien entre le "AutoPostBack" et le "setTimeout" !
    On ne jouit bien que de ce qu’on partage.

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

Discussions similaires

  1. trigger ne veux pas fonctionner
    Par HwRZxLc4 dans le forum jQuery
    Réponses: 2
    Dernier message: 30/04/2010, 10h21
  2. bgColor ne semble pas fonctionner avec IE
    Par beegees dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 07/08/2009, 15h54
  3. Debugger ne veux pas fonctionner
    Par uriotcea dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 11/10/2008, 16h05
  4. Mon portable ne veux pas fonctionner
    Par Bluescorpion26 dans le forum Composants
    Réponses: 2
    Dernier message: 04/12/2007, 04h26
  5. Kmail veux pas marcher sur mon serveur avec postfix
    Par jean christophe dans le forum Réseau
    Réponses: 4
    Dernier message: 06/05/2005, 01h02

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