2011-12-22 11 views
5

Tôi đang ràng buộc một Danh sách vào danh sách thả xuống. Nhưng tôi muốn cung cấp các giá trị khác cho giá trị cho mỗi mục danh sách.danh sách liên kết để danh sách thả xuống, phải làm gì với giá trị?

Tôi đã sau DDL và danh sách:

List<string> 

thể thao, bóng chuyền, bóng bầu dục

<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> 

Nhưng tôi muốn sau (ID trong giá trị)

<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> 

Làm thế nào để cần tạo Danh sách để tôi có thể tải danh sách thả xuống ở trên.

Cảm ơn

+0

How are you làm đầy lên các danh sách, có thể ở đó bạn cũng có id, vì vậy một cặp KeyValue phải là những gì bạn nên xem tại – V4Vendetta

+0

@ V4Vendetta aha, một từ điển bạn có nghĩa là gì? cho mỗi mục cũng là giá trị. KeyValuepair chỉ là một mục phải không? – Ozkan

Trả lời

9

Nếu bạn có thể thay đổi loại nguồn của mình, tôi khuyên bạn nên sử dụng từ điển. Bạn có thể làm theo cách này:

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

Điều này sẽ dẫn đến điều này:

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

Sau đó bạn có thể truy cập vào ID hoặc giá trị như thế này:

dropDown.SelectedItem.Value 
dropDown.SelectedItem.Text 
4

gì bạn có thể làm là để tạo ra các ListItems bằng tay như thế này:

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

Hoặc bạn có thể tạo một biến tạm thời và ràng buộc thả của bạn danh sách xuống với một truy vấn LINQ, như thế này:

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

và kết hợp điều đó với các đánh dấu:

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

đơn giản và sạch sẽ. –