2009-04-30 7 views
4

J'ai environ 10 contrôles déroulants qui sont remplis. Au lieu de copier/coller et de modifier quelques champs sur chacun, je voudrais les créer par programmation. Cela peut-il être fait?ASP.Net: liste déroulante et source de données créée dynamiquement

Voici à quoi ressemble l'un d'eux. Je voudrais ajouter par programme 10 contrôles dropdownlist et leurs contrôles SqlDataSource respectifs.

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

Répondre

11

Vous pouvez toujours créer vos contrôles dynamiquement. Dans ce cas, si toutes vos listes déroulantes sont différentes, je ne suis pas sûr que cela vous épargne quoi que ce soit, car vous devrez toujours leur assigner des identifiants et des sources de données.

Voici ce que le code pourrait ressembler à:

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

Il manque quelque chose dans la création d'un contrôle DropDownList. Vous devez ajouter une propriété comme question (DataSourceid = "ddlDAGender", DataTextField = "Sexe", DataValueField = "GenderID") –

Questions connexes