2012-03-21 15 views
6

List of ListItems öğesini kullanarak bir açılır listeye öğe eklemeye çalışıyorum, ancak bu değeri almıyor (yalnızca metin).ListItems'i ASP.NET'te DropDownList'e programlı olarak nasıl eklersiniz?

Aşağıdaki kod (aslında kullanıyorum koddan basitleştirilmiş) olduğu

:

PositionDropDown.DataSource = GetPositionOptions(); 
    PositionDropDown.DataBind(); 


    private List<ListItem> GetPositionOptions() 
    { 
     List<ListItem> items = new List<ListItem>(); 
     items.Add(new ListItem("","")); 
     items.Add(new ListItem("Top (main)", "TOP")); 
     items.Add(new ListItem("Bottom (full width)", "BTM")); 
     items.Add(new ListItem("Bottom Left", "MIL")); 
     items.Add(new ListItem("Bottom Middle", "MID")); 
     return items; 
    } 

Teslim edilen HTML öğesini yapıcı 2. parametresinde belirtilen değerlere eksik Ancak:

<option value=""></option> 
<option value="Top (main)">Top (main)</option> 
<option value="Bottom (full width)">Bottom (full width)</option> 
<option value="Bottom Left">Bottom Left</option> 
<option value="Bottom Middle">Bottom Middle</option> 

Neden belirtilen "değeri" kullanmıyor ve bunun yerine HTML'yi oluştururken sadece "isim" yi tekrarlıyorsunuz? Neyi yanlış yapıyorum?

+0

ahhh, lanet ... şimdi bakın, ama sen de kendini gördün mü :-) –

cevap

9

Bu kodla deneyin. Veri bağlama ile manuel öğe eklemeyi karıştırıyorsunuz.

private void SetPositionOptions() 
{ 
    PositionDropDown.Items.Add(new ListItem("","")); 
    PositionDropDown.Items.Add(new ListItem("Top (main)", "TOP")); 
    PositionDropDown.Items.Add(new ListItem("Bottom (full width)", "BTM")); 
    PositionDropDown.Items.Add(new ListItem("Bottom Left", "MIL")); 
    PositionDropDown.Items.Add(new ListItem("Bottom Middle", "MID")); 
} 
Ben olduğu gibi kodunuzu tutmak istiyorsanız bu 2 satırları
PositionDropDown.DataSource = GetPositionOptions(); 
PositionDropDown.DataTextField = "Text"; 
PositionDropDown.DataValueField = "Value"; 
PositionDropDown.DataBind(); 

eklemek gerekir Ama hiçbir mantıklı olduğunu söyleyebilirim

, sen ListItems bağlamak gerekmiyor .

+0

Teşekkürler, ama cevap daha da kolaydı - DataTextField ve DataValueField'ı belirtmeyi unuttum – NickG

+0

Ne demek istiyorsun? "ListItems'i bağlamanız gerekmiyor" mu? Düşündüğüm her şeye bağlanabilirsin. – NickG

+0

Bunu yapabilirsin, ancak tanımladığım ilk yaklaşımı kullanmak, öğeler koleksiyonunun bir ListItem koleksiyonu olduğu için gitmenin doğal yolu olurdu. –