2011-12-22 12 views
5

Wiążę listę do DropDownList. Ale chcę podać inne wartości do wartości na element listy.lista powiązań do listy rozwijanej, co zrobić z wartością?

Mam następujący ddl i listy:

List<string> 

sport, siatkówka, rugby

<select> 
    <option selected="selected" value="0"> Alle soorten</option> 
    <option value="sport">sport</option> 
    <option value="volleyball">volleyball</option> 
    <option value="rugby">rugby</option> 
</select> 

ale chcę następnego (ID wartości)

<select> 
    <option selected="selected" value="0"> Alle soorten</option> 
    <option value="1">sport</option> 
    <option value="2">volleyball</option> 
    <option value="3">rugby</option> 
</select> 

Jak to zrobić trzeba utworzyć listę, aby uzyskać powyższą listę rozwijaną.

Dzięki

+0

Jak się wypełnienie w górę lista, może tam też masz identyfikatory, więc para KeyValue powinna być tym, co powinieneś zobaczyć na – V4Vendetta

+0

@ V4Vendetta aha, Słownik, o którym mówisz? dla każdej pozycji również wartość. KeyValuepair to tylko jedna pozycja, prawda? – Ozkan

Odpowiedz

9

Jeśli możesz zmienić typ źródła, polecam użyć słownika. Można zrobić to w ten sposób:

var source = new Dictionary<int, string>(); 
source.Add(0, "Sports"); 
source.Add(1, "Football"); 
dropDown.DataSource = source; 
dropDown.DataTextField = "Key"; 
dropDown.DataValueField = "Value"; 
dropDown.DataBind(); 

Prowadziłoby to do tego:

<select name="DdlCat2" id="DdlCat2" class="cats"> 
    <option selected="selected" value="Sports">0</option> 
    <option value="Football">1</option> 
</select> 

Później można uzyskać dostęp identyfikator lub wartość takiego:

dropDown.SelectedItem.Value 
dropDown.SelectedItem.Text 
4

Co można zrobić jest stworzenie ListItems ręcznie tak:

List<string> yourValues; 
for(var i=0; i < yourValues.Count; i++) 
    YourDropDown.Items.Add(new ListItem(yourValues[i], i.ToString()); 

Lub można utworzyć zmienną tymczasową i związać swoją rozwijanej listy z kwerendy LINQ, jak poniżej:

List<string yourValues; 
var index = 0; 
YourDropDown.DataSource = yourValues.Select(x => new { Text = x, Value = index++ }); 
YourDropDown.DataBind(); 

i połączyć to ze znaczników:

<asp:DropDownList ID="YourDropDown" DataValueField="Value" DataTextField="Text" runat="server" /> 
+0

proste i czyste. –

Powiązane problemy