2014-05-01 4 views
8

Ich habe die folgende Page_Load-Methode in meiner Kontrolle (System.Web.UI.UserControl):Wie wird die Dropdown-Liste vor dem Laden der Seite in Webformulare ausgefüllt?

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

Dann in meinem ASPX habe ich dies:

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

Aber die Dropdown nie wird ausgefüllt. Was mache ich falsch?

+0

versuchen Sie es stattdessen: ShowAssumptions.DataSource = list; – MaxOvrdrv

+0

@MaxOvrdrv Danke, aber das scheint auch nicht zu funktionieren. – user1477388

+1

oh nein, ich habe gerade bemerkt: deklarieren Sie nicht die Dropdown-Liste in Ihrer Seite laden ... referenzieren Sie es einfach mit diesem. Siehe meine Antwort unten ... – MaxOvrdrv

Antwort

8

Ordnen Sie die Liste einfach als Datenquelle zu. Außerdem gehe ich davon aus, dass Sie die Liste nicht auf jedem PostBack neu laden wollen.

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, ich verstehe. Vielen Dank! Es sieht so aus, als wäre mein Problem 'DropDownList ShowAssumptions = new DropDownList();'. Nachdem ich das herausgenommen habe, funktioniert es. – user1477388

+0

Sie müssen keine Steuerelemente erstellen, wenn Sie die ASP-Version bereits erstellt haben. Tut mir leid, ich weiß nicht, wie ich das sonst noch sagen soll. – Tsukasa

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

Vielen Dank, aber es scheint nicht zu funktionieren. Kann ich noch etwas versuchen? – user1477388

+0

@ user1477388 bist du sicher? es funktioniert für mich, – 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

Im Fall, wenn Sie verwenden ASP.NET WebForms, EF und Bootstrap versuchen, diese

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

Gutes Beispiel bei Verwendung der Objektliste. – FailedUnitTest

Verwandte Themen