ASP.Net: القائمة المنسدلة ومصدر البيانات التي تم إنشاؤها ديناميكيا

StackOverflow https://stackoverflow.com/questions/805162

سؤال

ولدي حوالي 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>
هل كانت مفيدة؟

المحلول

ويمكنك دائما إنشاء عناصر التحكم بشكل حيوي. في هذه الحالة على الرغم، إذا كان كل قطرة الخاص بك إلى أسفل قوائم مختلفة، وأنا لست متأكدا من أنه يوفر لك أي شيء، لأنك سوف لا تزال بحاجة الى التنازل عنها لID الفردية وdatasources.

وإليك ما قد تبدو رمز مثل:

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();
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top