Question

J'ai environ 10 contrôles de liste déroulante qui sont remplis. Au lieu de copier / coller et de modifier quelques champs sur chacun, j'aimerais les créer par programme. Cela peut-il être fait?

Voici à quoi ressemble l’un d’eux. Je voudrais ajouter par programmation 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>
Était-ce utile?

La solution

Vous pouvez toujours créer vos contrôles de manière dynamique. Dans ce cas, cependant, si toutes vos listes déroulantes sont différentes, je ne suis pas sûr que cela vous épargne quelque chose, car vous devrez toujours leur attribuer des identifiants individuels et des sources de données.

Voici à quoi pourrait ressembler le code:

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();
        }
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top