2009-08-08 9 views

Antwort

77

Wenn Sie wissen, dass das Dropdownlist enthält der Wert, den Sie wählen suchen, Verwendung:

ddl.SelectedValue = "2"; 

Wenn Sie nicht sicher sind, ob der Wert vorhanden ist, verwenden (oder Sie erhalten nULL-Verweis Ausnahme):

ListItem selectedListItem = ddl.Items.FindByValue("2"); 

if (selectedListItem != null) 
{ 
    selectedListItem.Selected = true; 
} 
+3

Hier ist die gleiche zweite Lösung, aber in einer Zeile Code: ddl.Items.FindByValue ("2"). Selected = true; –

+2

Dies führt zu einem Fehler, wenn das Element nicht gefunden wird. – ScottE

+0

Die Dropdown-Liste befindet sich in einem Popup, das beim Laden der Seite ausgefüllt wurde. Ich versuche, den ausgewählten Index festzulegen, bevor das Popup angezeigt wird, aber es funktioniert nicht. Können Sie bitte helfen? http://stackoverflow.com/questions/28883433/how-to-populate-dropdownlist-in-a-popup-before-showing-from-code-behind – SearchForKnowledge

1
combobox1.SelectedValue = x; 

Ich vermute, dass Sie möchten, dass Sie etwas anderes hören, aber das ist, was Sie gefragt haben.

+0

Sie können nicht, weil der ausgewählte Wert nur den Wert nicht –

+0

David bekommen - Sie sind tatsächlich falsch. Probieren Sie es aus, und wenn Sie die -1 gaben, sollten Sie es wahrscheinlich entfernen! Sie erhalten natürlich eine Ausnahme, wenn der Wert nicht existiert, aber ansonsten funktioniert es gut. – ScottE

23
myDropDown.SelectedIndex = 
    myDropDown.Items.IndexOf(myDropDown.Items.FindByValue("myValue")) 
+0

Der Wert wird -1 im myDropDown.SelectedIndex Warum? –

+1

wahrscheinlich, weil myDropDown.Items hat kein Element „myValue“ –

+0

IndexOf() liefert -1, wenn das Element nicht in der Sammlung ist. FindByValue() findet das gesuchte Objekt nicht.Zerlegen Sie es einfach in separate Anweisungen, wenn Sie es debuggen müssen. – womp

1

Dies ist eine einfache Art und Weise eine Option aus einer Dropdownlist basierend auf einem String val

zu wählen
6
ddl.SetSelectedValue("2"); 

Mit einer praktischen Erweiterung:

public static class WebExtensions 
{ 

    /// <summary> 
    /// Selects the item in the list control that contains the specified value, if it exists. 
    /// </summary> 
    /// <param name="dropDownList"></param> 
    /// <param name="selectedValue">The value of the item in the list control to select</param> 
    /// <returns>Returns true if the value exists in the list control, false otherwise</returns> 
    public static Boolean SetSelectedValue(this DropDownList dropDownList, String selectedValue) 
    { 
     ListItem selectedListItem = dropDownList.Items.FindByValue(selectedValue); 

     if (selectedListItem != null) 
     { 
      selectedListItem.Selected = true; 
      return true; 
     } 
     else 
      return false; 
    } 
} 

Hinweis: Jeder Code wird in die Public Domain freigegeben. Keine Zuordnung erforderlich.

0

Für diejenigen, die hier durch Suche kommen (weil dieser Thread mehr als 3 Jahre alt ist):

string entry // replace with search value 

if (comboBox.Items.Contains(entry)) 
    comboBox.SelectedIndex = comboBox.Items.IndexOf(entry); 
else 
    comboBox.SelectedIndex = 0; 
+0

Die Contains-Methode verwendet einen ListItem-Parameter und keinen String-Wertparameter. –

1

Ian Boyd (oben eine große Antwort) hatte - Fügen Sie diese auf Ian Boyd Klasse „WebExtensions“ ein Element in einer Dropdownlist zu wählen, basierend auf Text:

/// <summary> 
    /// Selects the item in the list control that contains the specified text, if it exists. 
    /// </summary> 
    /// <param name="dropDownList"></param> 
    /// <param name="selectedText">The text of the item in the list control to select</param> 
    /// <returns>Returns true if the value exists in the list control, false otherwise</returns> 
    public static Boolean SetSelectedText(this DropDownList dropDownList, String selectedText) 
    { 
     ListItem selectedListItem = dropDownList.Items.FindByText(selectedText); 

     if (selectedListItem != null) 
     { 
      selectedListItem.Selected = true; 
      return true; 
     } 
     else 
      return false; 
    } 

es zu nennen:

WebExtensions.SetSelectedText(MyDropDownList, "MyValue"); 
0

Ich ziehe

if(ddl.Items.FindByValue(string) != null) 
{ 
    ddl.Items.FindByValue(string).Selected = true; 
} 

DDL mit dem Dropdownlist-ID und String mit String-Variablen-Namen oder Wert ersetzen.

+0

Diese Antwort wurde bereits in mehr oder weniger derselben Form zur Verfügung gestellt ... – MarioDS

+0

@MarioDS Wirklich? Ist nicht mehr oder weniger bezeichnend dafür, anders zu sein. Funktioniert es oder nicht? Ist es dasselbe wie etwas oder nicht? Wenn ja zu erst und nein zu zweit, warum das Minus? – San

+0

@MarioDS Die Antwort bietet die gleiche Funktion mit weniger Code. Alle Antworten hier bieten verschiedene Möglichkeiten für verschiedene Vorteile, Vorteile von diesem ist weniger Code. – San

Verwandte Themen