2012-04-27 15 views
11

markup:Asp.NET DropDownList SelectedItem.Value non cambiare

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

codice:

 // 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())); 

Nessun evento scatenante per SelectedIndexChanged dato che non è necessario.

Quando faccio clic sul pulsante per postback, il valore dell'elemento selezionato rimane il valore del primo elemento in DropDownList. Cosa mi manca?

NOTA Si prega di smettere di rispondere e modificare i messaggi. Potremmo lasciarlo così com'è poiché è già stata data una risposta.

risposta

31

Se stai associazione dati in Page_Load, sei essenzialmente anche il reset dell'elemento SelectedItem.

È necessario avvolgere qualsiasi codice di binding esistente in Page_Load all'interno di un blocco if(!IsPostBack).

if(!Page.IsPostBack) 
{ 

    // Your binding code here ... 

} 
+3

dannazione. non me ne sono accorto grazie – Bahamut

4

Il codice è probabilmente in esecuzione anche dopo il postback, cancellando la casella, quindi perdendo la selezione e tutto.

In tal caso, provare a inserire il codice in qualcosa come if(!Page.IsPostBack) { ... }.

-2

Sì vi manca di aggiungere discesa AutoPostBack = vero ..

Si prega di provare con il seguente nella vostra pagina aspx

+0

Questo forzerà un postback ogni volta che viene selezionato un elemento ... –

-1

hey per il primo indice per aggiungere tutto il necessario per aggiungere. è necessario inserire su un particolare numero indice

MyList.Items.Insert(0, "ALL"); 
+1

Questa risposta non farebbe alcuna differenza poiché aggiunge solo un elemento. La domanda ha già avuto risposta, grazie. – Bahamut

0

Quindi questa risposta è la soluzione "ovvia" alla causa più comune. Tuttavia, c'è un altro problema sorprendente che può causare questo! I miei valori di lista provenivano da un database e i valori avevano avanzamento riga e ritorno a capo: "\ r \ n". Questi valori sembrano uno spazio innocente, ma in realtà non lo sono! La mia soluzione era rimuovere questi valori Char nascosti. Spero che sia d'aiuto.

Problemi correlati