web-dev-qa-db-fra.com

Asp.NET DropDownList SelectedItem.Value ne change pas

balisage:

            <div style="float:left;margin-top:15px;width:80px">
                <asp:DropDownList ID="MyList" runat="server" Width="100px"></asp:DropDownList>
            </div>

code:

        // clear vehicles list
        MyList.Items.Clear();

        // add 'all' option
        MyList.Items.Add(new ListItem("ALL", "0"));

        // add assets
        foreach (CustomClass item in items)
            MyList.Items.Add(new ListItem(item.Name, item.ID.ToString()));

Aucun événement ne déclenche pour SelectedIndexChanged car ce n'est pas nécessaire.

Lorsque je clique sur le bouton de publication, la valeur de l'élément sélectionné reste la valeur du premier élément de DropDownList. Qu'est-ce que je rate?

NOTE Veuillez cesser de répondre et de modifier des messages. Nous pouvons le laisser tel quel puisqu'il a déjà été répondu.

14
Bahamut

Si vous êtes en liaison de données dans Page_Load, vous réinitialisez également l'élément SelectedItem.

Vous devez envelopper tout code de liaison existant dans Page_Load dans un bloc if(!IsPostBack).

if(!Page.IsPostBack)
{

    // Your binding code here ...

}
39
Leniel Maccaferri

Votre code est probablement en train de s'exécuter après la publication aussi, en effaçant la case, perdant ainsi la sélection et tout.

Si tel est le cas, essayez d’envelopper le code dans une fonction telle que if( !Page.IsPostBack ) { ... }.

4
Meligy

Donc, cette réponse est la solution "évidente" à la cause la plus commune. Cependant, il y a un autre problème surprenant qui peut causer cela! Les valeurs de ma liste provenaient d'une base de données et avaient un saut de ligne et un retour chariot: "\ r\n". Ces valeurs ressemblent à un espace innocent, mais en réalité elles ne le sont pas! Ma solution était de supprimer ces valeurs Char cachées. J'espère que ça aide.

0
Oliver Lundt