ASP.Net: القائمة المنسدلة ومصدر البيانات التي تم إنشاؤها ديناميكيا
-
03-07-2019 - |
سؤال
ولدي حوالي 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();
}
}
}
لا تنتمي إلى StackOverflow