如何以非冗余方式从同一数据源读取多个 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);
}
我在表单视图中内置了大约 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);
}