2012-04-27 4 views
11

Markup:Asp.NET Dropdown SelectedItem.Value nicht ändert

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

Kein Ereignis für SelectedIndexChanged Auslösung da es nicht notwendig ist.

Wenn ich auf die Schaltfläche für Postback klicke, bleibt der Wert des ausgewählten Elements der Wert des ersten Elements in der DropDownList. Was vermisse ich?

HINWEIS Bitte aufhören zu antworten und Beiträge zu bearbeiten. Wir können es so lassen, wie es ist, da es bereits beantwortet wurde.

Antwort

31

Wenn Sie in Page_Load Databinding sind, du bist im Wesentlichen auch das SelectedItem zurücksetzen.

Sie sollten den in Page_Load vorhandenen Bindungscode in einen if(!IsPostBack) Block einbinden.

if(!Page.IsPostBack) 
{ 

    // Your binding code here ... 

} 
+3

verdammt. Das habe ich nicht bemerkt. Danke – Bahamut

4

Ihr Code wird wahrscheinlich auch nach dem Postback ausgeführt, löscht die Box und verliert damit die Auswahl und alles.

Wenn ja, versuchen Sie, den Code in etwas wie if(!Page.IsPostBack) { ... } zu wickeln.

-2

Ja, Sie fehlen Liste Autopostback = true hinzufügen Drop-down ..

Bitte versuchen Sie es mit Ihrer ASPX-Seite folgenden

+0

Dies wird ein Postback jedes Mal erzwingen, wenn ein Element ausgewählt wird ... –

-1

hey für den ersten Index hinzufügen alle nicht erforderlich, um hinzuzufügen. Sie müssen auf bestimmten Index Nummer einfügen

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

Diese Antwort würde keinen Unterschied machen, da es nur ein Element hinzufügt. Frage wurde bereits beantwortet, danke. – Bahamut

0

So ist diese Antwort die "offensichtliche" Lösung für die häufigste Ursache. Es gibt jedoch noch ein weiteres überraschendes Problem, das dies verursachen kann! Meine Listenwerte stammten aus einer Datenbank und die Werte hatten Zeilenvorschub und Wagenrücklauf: "\ r \ n". Diese Werte sehen aus wie ein unschuldiger Raum, aber eigentlich nicht! Meine Lösung bestand darin, diese versteckten Char-Werte zu entfernen. Ich hoffe es hilft.

Verwandte Themen