如何以非冗余方式从同一数据源读取多个 DropDownlists?

How to make several DropDownlists read from the same datasource in a non-Redundant way?

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

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

如果用户单击 "add field" 按钮,则会出现额外的文本框。

现在提出问题: 其中一个字段是下拉列表,此后我有 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);
}