2014-05-01 17 views
8

Mam następujące metody w moim Page_Load sterowania (System.Web.UI.UserControl):Jak wypełnić listę rozwijaną przed załadowaniem strony w formularzach internetowych?

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

Następnie w moim .aspx mam to:

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

Ale, nigdy DropDownList zostanie zaludnione. Co ja robię źle?

+0

spróbuj tego zamiast: ShowAssumptions.DataSource = list; – MaxOvrdrv

+0

@MaxOvrdrv Dzięki, ale to też nie działa. – user1477388

+1

o, nie, właśnie zauważyłem: nie zadeklaruj listy rozwijanej na stronie ładującej ... po prostu odwołuj się do niej używając tego. Zobacz moją odpowiedź poniżej ... – MaxOvrdrv

Odpowiedz

8

Po prostu przypisz listę jako źródło danych. Zakładam również, że nie chcesz przeładowywać listy na każdym 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, rozumiem. Dziękuję Ci! Wygląda na to, że moim problemem było 'DropDownList ShowAssumptions = new DropDownList();'. Po tym, jak to zrobiłem, działa. – user1477388

+0

Nie musisz tworzyć formantów, gdy już stworzyłeś wersję asp. Przepraszam, nie wiem jak to powiedzieć. – Tsukasa

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

Dziękuję bardzo, ale wydaje się, że nie działa. Coś jeszcze mogę spróbować? – user1477388

+0

@ user1477388 jesteś pewien? to działa dla mnie, – 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

W przypadku jeśli używasz ASP.NET WebForms, EF i Bootstrap spróbować tej

HTML

<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

Dobry przykład przy korzystaniu z listy obiektów. – FailedUnitTest

Powiązane problemy