2014-05-01 9 views
8

Tôi có phương pháp sau đây Page_Load trong kiểm soát của tôi (System.Web.UI.UserControl):Cách điền danh sách thả xuống trước khi tải trang trong biểu mẫu web?

protected void Page_Load(object sender, EventArgs e) 
    { 
     DropDownList ShowAssumptions = new DropDownList(); 
     List<string> list = new List<string>() 
     { 
      "test", 
      "test2" 
     }; 
     ShowAssumptions.DataSource = from i in list 
            select new ListItem() 
            { 
             Text = i, 
             Value = i 
            }; 
     ShowAssumptions.DataBind(); 
    } 

Sau đó, trong aspx của tôi, tôi có điều này:

<asp:DropDownList id="ShowAssumptions" runat="server"> 
</asp:DropDownList> 

Nhưng, DropDownList không bao giờ được dân cư. Tôi đang làm gì sai?

+0

hãy thử thay vào đó: ShowAssumptions.DataSource = list; – MaxOvrdrv

+0

@MaxOvrdrv Cảm ơn nhưng điều này dường như không hoạt động. – user1477388

+1

oh no i just just notice: không khai báo danh sách thả xuống trong tải trang của bạn ... chỉ cần tham khảo nó bằng cách sử dụng này. Xem câu trả lời của tôi dưới đây ... – MaxOvrdrv

Trả lời

8

Chỉ định danh sách làm nguồn dữ liệu. Ngoài ra tôi giả sử bạn không muốn tải lại danh sách trên mọi PostBack.

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     List<string> list = new List<string>() 
     { 
      "test", 
      "test2" 
     }; 
     ShowAssumptions.DataSource = list; 
     ShowAssumptions.DataBind(); 
    } 
} 
+0

Ahh, tôi hiểu rồi. Cảm ơn bạn! Có vẻ như vấn đề của tôi là 'DropDownList ShowAssumptions = new DropDownList();'. Sau khi tôi lấy nó ra, nó hoạt động. – user1477388

+0

Bạn không phải tạo điều khiển khi bạn đã tạo phiên bản asp của nó. Xin lỗi tôi không biết làm thế nào để từ đó. – Tsukasa

1
protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      foreach (string item in list) 
      { 
       ShowAssumptions.Items.Add(item); 
      } 
     } 
    } 
+0

Cảm ơn rất nhiều, nhưng nó dường như không hoạt động. Bất cứ điều gì khác tôi có thể thử? – user1477388

+0

@ user1477388 bạn có chắc chắn không? nó hoạt động cho tôi, – Sajeetharan

2
protected void Page_Load(object sender, EventArgs e) 
    { 
     //Don't do this here! 
     //DropDownList ShowAssumptions = new DropDownList(); 

     List<string> list = new List<string>() 
     { 
      "test", 
      "test2" 
     }; 
     this.ShowAssumptions.DataSource = from i in list 
            select new ListItem() 
            { 
             Text = i, 
             Value = i 
            }; 
     this.ShowAssumptions.DataBind(); 
    } 
3

Trong trường hợp nếu bạn sử dụng ASP.NET WebForms, EF và Bootstrap thử

HTML này

<div class="form-group">  

<label class="control-label" for="inputType">Lines: </label>        

<asp:DropDownList ID="DropDownListFabricLines" CssClass="dropdown form-control" runat="server"></asp:DropDownList> 

</div> 

C#

var entities = new DababaseEntities(); 

List<FabricLineView> fabricLines = entities .Line.Select(x=> new FabricLineView { ID = x.LineaID, Name = x.LineaNombre }).ToList(); 

DropDownListFabricLines.DataValueField = "ID"; 
DropDownListFabricLines.DataTextField = "Name"; 
DropDownListFabricLines.DataSource = fabricLines; 
DropDownListFabricLines.DataBind(); 


public sealed class FabricLineView 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 
+0

Ví dụ tốt khi sử dụng Danh sách đối tượng. – FailedUnitTest

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