ASP.Net: раскрывающийся список и источник данных создается динамически - PullRequest
4 голосов
/ 30 апреля 2009

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

Вот как выглядит один из них. Я хотел бы программно добавить 10 элементов управления раскрывающегося списка и их соответствующие элементы управления 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>

1 Ответ

11 голосов
/ 30 апреля 2009

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

Вот как может выглядеть код:

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();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...