如何以非冗余的方式从同一数据源读取多个下拉列表

本文关键字:数据源 读取 下拉列表 冗余 方式 | 更新日期: 2023-09-27 18:06:14

我有大约4个字段内置在一个表单视图,但每个必须出现最多10,如果用户希望添加更多的信息(注意:这是必需的)

所以它像:NameTextBox1 till NameTextBox10和TestTextBox1 till TestTexBox10

如果用户点击"添加字段"按钮,则会出现额外的文本框。

现在对于问题:其中一个字段是下拉列表从此以后,我有10个下拉列表,它们都有相同的信息,它们都从同一个函数中读取。有没有比把同样的事情写10次更有效的方法去做下面的过程?

 DropDownList DropDownList1 = (DropDownList)EntryFormView.FindControl("DropDownList1");
  DropDownList1.DataSource = GeographicManager.ReadLocations();
  DropDownList1.DataBind();

如何以非冗余的方式从同一数据源读取多个下拉列表

将其封装到另一个接受id的函数中:

private void initDropDown(string dropDownID)
{
    DropDownList DropDownList1 = (DropDownList)EntryFormView.FindControl(dropDownID);
    DropDownList1.DataSource = GeographicManager.ReadLocations();
    DropDownList1.DataBind();
}
initDropDown("DropDownList1");
initDropDown("DropDownList2");

如果你需要一次初始化它们,你可以使用循环来完成:

for (int i=1; i<=10; i++)
{
    initDropDown("DropDownList" + i);
}

或者你可以把它们的id放在一个数组中,然后遍历它。如果你的id没有遵循简单的"DropDownListX"模式,也很有用:

string[] dropDownIDs = ["DropDownList1", "DropDownListTwo", "TheDropDownList"];
foreach (String ID in dropDownIDs)
{
    initDropDown(ID);
}