2012-06-11 18 views
31

Chcę ustawić selecteditem dla bolusa. kontrola listy rozwijanej netto programowo.Jak ustawić listę rozwijaną jako wybraną w ASP.NET?

Tak więc chcę przekazać wartość do kontroli listy rozwijanej, aby ustawić wybraną pozycję, gdzie jest wartość pozycji równą przekazanej wartości.

+1

A w czym problem/pytanie? –

+0

pokaż kod @farouk, wtedy postaramy się pomóc .... –

+0

problem rozwiązany dzięki wszystkim – farouk

Odpowiedz

50
dropdownlist.ClearSelection(); //making sure the previous selection has been cleared 
dropdownlist.Items.FindByValue(value).Selected = true; 
+0

Ale problem polega na tym, że musisz owijać go wokół sprawdzania błędów, jak Try() lub test ListItem. Jeśli "wartość" ma wartość, która nie istnieje na liście rozwijanej, otrzymasz wyjątek (myślę, że nie znaleziono błędu obiektu). – Fandango68

+1

Trochę martwi się wątek, ale to nie działa dla mnie. Jakieś nowe rozwiązania? – gadria

+0

@gadria. wygląda na to, że brakuje ci wartości w liście rozwijanej, którą próbujesz znaleźć przez 'FindByValue' – Rab

26

Możesz ustawić wartość SelectedValue na wartość, którą chcesz wybrać. Jeśli masz już wybrany element, powinieneś usunąć zaznaczenie, w przeciwnym razie pojawi się błąd "Cannot have multiple items selected in a DropDownList".

dropdownlist.ClearSelection(); 
dropdownlist.SelectedValue = value; 

Można również użyć ListItemCollection.FindByText lub ListItemCollection.FindByValue

dropdownlist.ClearSelection(); 
dropdownlist.Items.FindByValue(value).Selected = true; 

użyć metody FindByValue przeszukać kolekcję dla ListItem z właściwości Value, który zawiera wartość określoną przez parametru wartości. Ta metoda wykonuje rozróżnianie kultur wrażliwych na wielkość liter i wielkości liter. Ta metoda nie powoduje wyszukiwania częściowego ani wyszukiwania z użyciem symboli wieloznacznych. Jeśli element nie zostanie znaleziony w kolekcji przy użyciu tego kryterium, zwracana jest wartość null, MSDN.

Jeśli oczekujesz, że być może patrząc na tekst/wartość, że przyzwyczajenie jest obecny w DropDownList listitem kolekcji to należy sprawdzić, czy można dostać przedmiot ListItem lub null z FindByText lub FindByValue zanim dostęp do wybranych nieruchomości. Jeśli spróbujesz uzyskać dostęp do opcji Wybrane po zwrocie wartości null, otrzymasz NullReferenceException.

ListItem listItem = dropdownlist.Items.FindByValue(value); 

if(listItem != null) 
{ 
    dropdownlist.ClearSelection(); 
    listItem.Selected = true; 
} 
+1

Wymyślone rozwiązanie nie działa dla mnie, ale ten jak urok – eka808

+2

Dlaczego inne rozwiązania nie działa? –

+1

@ eka808 Czy mógłbyś rozwinąć swój komentarz na pytanie Yosi? – TylerH

0

Jest to bardzo ładny i czysty przykład: (sprawdź ten wielki poradnik dla pełnego wyjaśnienia link)

public static IEnumerable<SelectListItem> ToSelectListItems(
       this IEnumerable<Album> albums, int selectedId) 
{ 
    return 
     albums.OrderBy(album => album.Name) 
       .Select(album => 
        new SelectListItem 
        { 
        Selected = (album.ID == selectedId), 
        Text = album.Name, 
        Value = album.ID.ToString() 
        }); 
} 

W tym MSDN link można przeczytać de DropDownList dokumentacji metody.

Mam nadzieję, że to pomaga.

23

Możesz użyć metody FindByValue, aby przeszukać DropDownList dla elementu o wartości zgodnej z parametrem.

dropdownlist.ClearSelection(); 
dropdownlist.Items.FindByValue(value).Selected = true; 

Alternatywnie można użyć metody FindByText przeszukać DropDownList dla elementu z tekstem dopasowania parametru.

Przed użyciem metody FindByValue, nie zapomnij zresetować DropDownList, aby żadne pozycje nie były wybierane przy użyciu metody ClearSelection(). Usuwa zaznaczenie listy i ustawia właściwość Wybrane dla wszystkich elementów na wartość fałsz. W przeciwnym razie otrzymasz następujący wyjątek.

"Cannot have multiple items selected in a DropDownList" 
-3

Ustaw właściwość rozwijana

selected="true" 
Powiązane problemy