2012-06-11 31 views
31

Asp için seçili ayarlamak istiyorum. net dropdownlist programlı olarak kontrol eder.ASP.NET'te seçili bir dropdownlist öğesi nasıl ayarlanır?

Bu yüzden, seçilen öğeyi geçirilen değere eşit olan öğenin seçili öğesini ayarlamak için açılır liste denetimine bir değer vermek istiyorum.

+1

Ve sorun/soru ne? –

+0

bazı kodları @farouk göster, o zaman size yardım etmeye çalışacağız .... –

+0

sorun çözüldü teşekkürler – farouk

cevap

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

Ancak bununla ilgili problem, bunu Try() veya ListItem testi gibi bir hata kontrolüne sarmanız gerektiğidir. Eğer "değer" açılır listesinde bulunmayan bir değere sahipse, bir istisna elde edersiniz (nesne bence hata bulmamıştır). – Fandango68

+1

İş parçacığı necroing ama bu benim için çalışmıyor. Herhangi bir yeni çözüm belki? – gadria

+0

@gadria. 'FindByValue' – Rab

26

Seçmek istediğiniz değere SelectedValue10'u ayarlayabilirsiniz. Eğer zaten seçilmiş bir öğe seçtiyseniz, seçimi temizlemelisiniz, aksi halde "Cannot have multiple items selected in a DropDownList" hatasını alırsınız.

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

Ayrıca ListItemCollection.FindByText veya

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

Kullanım ListItemCollection.FindByValue FindByValue yöntemi değeri parametresi tarafından belirlenen değeri içeren bir değer özelliğe sahip bir ListItem için toplama aramak için kullanabilirsiniz. Bu yöntem, büyük/küçük harfe duyarlı ve kültüre duyarsız karşılaştırma yapar. Bu yöntem kısmi aramaları veya joker aramalar yapmaz. Bu ölçüt kullanılarak koleksiyonunda bir öğe bulunamazsa, null döndürülür, MSDN. size FindByText veya mülk Seçilmiş erişimin önce FindByValue den ListItem nesne veya null alırsanız o zaman kontrol etmeli metin/alışkanlık DropDownList ListItem koleksiyonunda bulunması değer arayan olabileceğini düşünüyorsanız

. Null döndüğünde Seçili erişmeye çalışırsanız NullReferenceException alırsınız.

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

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

Mentionned çözümü benim için işe yaramadı ama bu bir çekicilik gibi – eka808

+2

Neden diğer çözümler işe yaramadı? –

+1

@ eka808 Yosi sorusu başına yorumunuzu detaylandırabilir miydiniz? – TylerH

0

Bu çok güzel ve temiz bir örnektir: Eğer DropDownList yöntem belgelerine de okuyabilir bu MSDN link yılında

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

(tüm açıklamaları link için bu büyük öğretici kontrol edin).

Yardım edin.

23

Parametre ile eşleşen bir Değere sahip bir Öğe için DropDownList öğesini aramak üzere FindByValue yöntemini kullanabilirsiniz.

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

Alternatif Metin parametresini eşleşen bir Öğe için DropDownList aramak için FindByText yöntemini kullanabilirsiniz.

FindByValue yöntemini kullanmadan önce, DropDownList öğesini sıfırlamayı unutmayın, böylece ClearSelection() yöntemi kullanılarak hiçbir öğe seçilmemelidir. Liste seçimini temizler ve tüm öğelerin Selected özelliğini false olarak ayarlar. Aksi takdirde aşağıdaki istisna elde edersiniz.

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

Set açılan mülkiyet

selected="true" 
İlgili konular