2012-03-21 35 views
6

Tôi đang cố gắng thêm các mục vào danh sách thả xuống bằng Danh sách ListItems, nhưng nó không chọn giá trị (chỉ văn bản).Làm thế nào để bạn lập trình thêm ListItems vào DropDownList trong ASP.NET?

Mã này được bên dưới (giản thể từ mã Tôi đang thực sự sử dụng):

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

Tuy nhiên, HTML rendered thiếu các giá trị quy định trong tham số thứ 2 của các nhà xây dựng ListItem:

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

Tại sao nó không sử dụng "giá trị" được chỉ định và thay vào đó chỉ lặp lại "tên" khi hiển thị HTML? Tôi đang làm gì sai?

+0

ahhh, chết tiệt ... nhìn thấy nó ngay bây giờ, nhưng bạn đã nhìn thấy nó cho mình quá :-) –

Trả lời

9

Hãy thử với mã này. Bạn đang trộn thêm mục theo cách thủ công với ràng buộc dữ liệu.

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

Tôi muốn nói rằng nếu bạn muốn giữ lại mã của bạn vì nó là bạn nên thêm này 2 dòng

PositionDropDown.DataSource = GetPositionOptions(); 
PositionDropDown.DataTextField = "Text"; 
PositionDropDown.DataValueField = "Value"; 
PositionDropDown.DataBind(); 

Nhưng nó làm cho không có ý nghĩa, bạn không phải để ràng buộc ListItems.

+0

Cảm ơn, nhưng câu trả lời thậm chí còn đơn giản hơn - tôi quên quên chỉ định DataTextField và DataValueField – NickG

+0

Ý của bạn là gì? "bạn không phải ràng buộc ListItems"? Bạn có thể liên kết với bất cứ điều gì tôi nghĩ. – NickG

+0

Bạn có thể làm điều đó, nhưng sử dụng cách tiếp cận đầu tiên tôi mô tả sẽ là cách tự nhiên để đi vì bộ sưu tập Items là một bộ sưu tập của ListItem. –

Các vấn đề liên quan