2009-04-30 1 views
4

У меня есть около 10 выпадающих элементов списка, которые заполняются. Вместо копирования/вставки и изменения нескольких полей на каждом я хотел бы создать их программно. Это можно сделать?ASP.Net: выпадающий список и источник данных, созданный динамически

Вот что один из них выглядит. Я хотел бы программно добавить 10 элементов управления dropdownlist и их соответствующих элементов управления SqlDataSource.

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

ответ

11

Вы всегда можете создавать свои элементы управления динамически. В этом случае, хотя, если все выпадающие списки отличаются друг от друга, я не уверен, что он вас сэкономит, так как вам все равно придется назначать им индивидуальные идентификаторы и источники данных.

Вот что код может выглядеть следующим образом:

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

Что-то отсутствует в создании DropDownList контроля. Вы должны добавить некоторое свойство, например, вопрос (DataSourceid = "ddlDAGender", DataTextField = "Пол", DataValueField = "GenderID") –