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.
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 ...
}
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 ) { ... }
.
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.