2009-04-30 3 views
4

Ich habe etwa 10 Dropdown-Listensteuerelemente, die ausgefüllt werden. Anstatt jeweils einige Felder zu kopieren/einzufügen und zu modifizieren, möchte ich sie programmatisch erstellen. Kann das gemacht werden?ASP.Net: Dropdown-Liste und Datenquelle dynamisch erstellt

Hier ist, wie einer von ihnen aussieht. Ich möchte 10 Dropdown-Listensteuerelemente und ihre jeweiligen SqlDataSource-Steuerelemente programmgesteuert hinzufügen.

<asp:SqlDataSource ID = "ddlDAGender" runat=server 
    ConnectionString="<%$ ConnectionStrings:test1ConnectionString %>" 
    SelectCommand = "select GenderID,Gender from mylookupGender" 
    > 
    </asp:SqlDataSource> 


<asp:Label ID="Label3" runat="server" Text="Gender"></asp:Label> 

     <asp:DropDownList ID="ddlGender" runat="server" 
       DataSourceid="ddlDAGender" 
       DataTextField="Gender" DataValueField="GenderID" 

    > 

</asp:DropDownList> 

Antwort

11

Sie können Ihre Steuerelemente immer dynamisch erstellen. In diesem Fall, wenn alle Ihre Dropdown-Listen unterschiedlich sind, bin ich mir nicht sicher, ob es Ihnen etwas spart, da Sie ihnen immer noch individuelle IDs und Datenquellen zuweisen müssen.

Hier ist, was der Code könnte wie folgt aussehen:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     BindDropDownLists(); 
    } 
} 

protected void Page_Init(object sender, EventArgs e) 
{ 

     SqlDataSource sqlDS = new SqlDataSource(); 
     sqlDS.ConnectionString = ConfigurationManager.ConnectionStrings[0].ToString(); 
     sqlDS.SelectCommand = "select GenderID,Gender from mylookupGender"; 
     form1.Controls.Add(sqlDS); 

     DropDownList ddl = new DropDownList(); 
     ddl.ID = "dddlGender"; 
     ddl.DataSource = sqlDS; 
     ddl.DataTextField = "Gender"; 
     ddl.DataValueField = "GenderID"; 
     form1.Controls.Add(ddl); 

     // ... Repeat above code 9 times or put in a for loop if they're all the same... 
} 

private void BindDropDownLists() 
{ 
    foreach (Control ctl in form1.Controls) 
    { 
     if (ctl is DropDownList) 
     { 
      (ctl as DropDownList).DataBind(); 
     } 
    } 
} 
+0

Etwas bei der Schaffung von Dropdownliste Kontrolle fehlt. Sie müssen eine Eigenschaft wie Frage hinzufügen (DataSourceid = "ddlDAGender", DataTextField = "Geschlecht", DataValueField = "GenderID") –