Bonjour,

Depuis deux jours, je lis des documentations en anglais qui m'expliquent comment optimiser la taille de mon viewstate ou dans quel ordre surviennent les évènements d'une page serveur ... mais dans tout cela, je n'ai toujours pas compris l'enchainement simple qui me permet de l'utiliser.
J'ai bien essayé d'accéder directement à ViewState["ddlListe1"], mais sans succès

Donc, j'ai une question simple : comment détecter que la valeur d'un élément du formulaire à changé ?

C'est à dire : dans quelle méthode mettre quelle donnée pour détecter ce changement.
Prenons pour exemple deux DropDownList. Les valeurs de la seconde dépendent de l'item sélectionné dans la première et ne sont modifiées que si la valeur de la DropDownList a changé et est renseignée.

Le code de l'ASPX :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<asp:DropDownList ID="ddlListe1" AutoPostBack="true" runat="server" /><br />
<asp:DropDownList ID="ddlListe2" AutoPostBack="true" runat="server" />
Le code de l'ASPX.cs (l'item avec "-" doit permettre de ré initialiser) :
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
protected void Page_PreRender(object sender, EventArgs e)
{
    // au premier chargement
    if ((ddlListe1.SelectedValue == "") || (ddlListe1.SelectedValue == "-1")) {
        // chargement de la liste 1
        DataSet liste1 = (DataSet)Session["liste1"];
        ddlListe1.DataSource = liste1 ;
        ddlListe1.DataTextField = "NOM";
        ddlListe1.DataValueField = "ID";
        ddlListe1.DataBind();
        ddlListe1.Items.Insert(0, new ListItem("-", "-1"));
        ddlListe2.Enabled = false;
    }
    else { 
        // si liste1 sélectionnée, récupération liste 2
        int idListe1 = Int32.Parse(ddlListe1.SelectedValue);
 
        // *** ici, il faudrait un truc pour dire "ou si changement"
        if ((ddlListe2.SelectedValue == "") || (ddlListe2.SelectedValue == "-1")) {
            // chargement de la liste 2 si liste 1 sélectionnée
            DataSet liste2 = MonObjet.getListe2(idListe1);
            ddlListe2.DataSource = listeSites;
            ddlListe2.DataTextField = "NOM";
            ddlListe2.DataValueField = "ID";
            ddlListe2.DataBind();
            ddlListe2.Enabled = true;
        }
    }
}
Merci d'avance pour votre aide.
Stéphanie

Remarque : j'ai déja suivi tous les liens que j'ai pû trouver sur le forum