Restaurer un menu déroulant de l'élément sélectionné après la publication

L'IDÉE

Je suis en train de faire une chose très simple rafraîchissement de la page lorsqu'un élément de la liste est sélectionné. L'élément sélectionné de la liste déroulante est transmis à la chaîne de requête comme un paramètre. La Page est rechargée. Ensuite, les paramètres sont pris à partir de la chaîne de requête et utilisé pour restaurer la sélection de la liste déroulante. Paramètre conserve la valeur de l'élément sélectionné.

LE PROBLÈME

Réelle valeur sélectionnée n'est pas transmise au paramètre de chaîne de requête, il est toujours à "0". DropDownList n'est jamais le dernier élément sélectionné, il restaure toujours celle qui est enregistrée dans l'état d'affichage. ViewState ne veux pas me souvenir de trucs nouveaux, il garde toujours un seul et même info. J'ai essayé de trouver la solution depuis des mois. Sur certaines pages, il fonctionne, mais dans la plupart des cas, il n'est pas. Si elle a travaillé quelque part dans mon application web, je n'avais aucune idée de pourquoi, et espérait qu'elle continuerait à travailler le lendemain. Parfois, il a juste arrêté de travailler et je n'étais pas en mesure de le réparer.

PAR DÉFAUT DE LA PAGE ASPX

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="ExperimentalPage.aspx.cs" 
Inherits="ExperimentalPage" Title="Enperimental Page" EnableViewState="True" %>

<asp:Content ID="ExperimentalLeftPane" ContentPlaceHolderID="cph_LeftPane" Runat="Server">  
    <div style="position: absolute; left: 0px; top: 35px; width: 250px;">
        <asp:DropDownList ID="dd1" runat="server" OnSelectedIndexChanged="RefreshPage" AutoPostBack="True" CssClass="class_DropDown" Style="width: 250px; margin-bottom: 3px;"/>
    </div>
</asp:Content>

ASPX PAR DÉFAUT.CS PAGE CODE-BEHIND

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        dd1.Items.Insert(0, "dd1-0");
        dd1.Items[0].Value = "0";
        dd1.Items.Insert(1, "dd1-1");
        dd1.Items[1].Value = "1";
        dd1.Items.Insert(2, "dd1-2");
        dd1.Items[2].Value = "2";
    }
    else        
    {
        dd1.SelectedIndex = dd1.Items.IndexOf(dd1.Items.FindByValue(Convert.ToString(Request.QueryString["dd1"])));
    }
}

protected void RefreshPage(object o, EventArgs e)
{
    Page.Response.Redirect("ExperimentalPage.aspx?"
    + "&dd1=" + dd1.SelectedValue);
}

LES TENTATIVES POUR LE FAIRE FONCTIONNER

Scénario 1. EnableViewState="True"

Je sélectionne troisième élément (avec la valeur "2") de la dropdownlist, la page est rechargée. Chaîne de requête ne prend jamais la valeur "2". Il est toujours "0". Le premier élément est toujours sélectionné après la publication, peut-être à cause de l'état d'affichage, qui le remet à zéro.

Le scénario 2. EnableViewState="False"

Valeur sélectionnée n'est pas enregistrée. DropDownList est complètement vide après la publication.

Scénario 3. EnableViewState="False". Dropdownlist est rempli avec des données sur chaque chargement de la page. La publication n'est vérifiée que pour récupérer la valeur sélectionnée:

protected void Page_Load(object sender, EventArgs e)
{
    //if (!Page.IsPostBack)
    //{
        dd1.Items.Insert(0, "dd1-0");
        dd1.Items[0].Value = "0";
        dd1.Items.Insert(1, "dd1-1");
        dd1.Items[1].Value = "1";
        dd1.Items.Insert(2, "dd1-2");
        dd1.Items[2].Value = "2";
    //}
    //else      
    if (Page.IsPostBack)
    {
        dd1.SelectedIndex = dd1.Items.IndexOf(dd1.Items.FindByValue(Convert.ToString(Request.QueryString["dd1"])));
    }
}

Dans ce cas, la valeur sélectionnée est jamais enregistrée sur la chaîne de requête et de la liste déroulante de l'élément sélectionné n'est jamais restauré.

UNE GRANDE QUESTION

Ce qui me manque et comment le faire garder à la valeur sélectionnée et les restaurer après la publication?

LE PROBLÈME PARTIELLEMENT RÉSOLU

Voir ma réponse

quand comment vous appelez RefreshPage fonction?
Regarder le PAGE ASPX code. C'est une méthode pour la DropDownList.

OriginalL'auteur SWA | 2013-07-04