c# - 有没有更好的方法来填充多个下拉列表?

标签 c# asp.net

我需要填充多个 DropDownList,并且我搜索了更好的方法来执行此操作,因为我有 8 个 DropDownList 需要填充。在我看来,这不是最好的方法,你有 8 次相同的代码......可以使用循环吗?

public partial class MainPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        DropDownList();
    }

    public void DropDownList()
    { 
        string filePath = Server.MapPath("~/Datas.xml");
        using (DataSet ds = new DataSet())
        {
            ds.ReadXml(filePath);
            DropDownList1.DataSource = ds;
            DropDownList1.DataTextField = "name";
            DropDownList1.DataValueField = "id";
            DropDownList1.DataBind();

            DropDownList2.DataSource = ds;
            DropDownList2.DataTextField = "name";
            DropDownList2.DataValueField = "id";
            DropDownList2.DataBind();

            //Then DropDownList3, 4, 5, 6....8
        }
    }
}

这是我的用户的 XML:

    <?xml version="1.0" encoding="utf-8" ?>
<users>
  <user>
    <id>1</id>
    <name>User1</name>
  </user>
  <user>
    <id>2</id>
    <name>User2</name>
  </user>
  <user>
    <id>3</id>
    <name>User3</name>
  </user>
  <user>
    <id>4</id>
    <name>User4</name>
  </user>
</users>

最佳答案

只需将它们放在一个数组中:

DropDownList[] ddls = new DropDownList[]{
    DropDownList1, DropDownList2,
    DropDownList3, DropDownList4,
    ...
};

然后遍历它:

foreach (DropDownList ddl in ddls)
{
    ddl.DataSource = ds;
    ddl.DataTextField = "name";
    ddl.DataValueField = "id";
    ddl.DataBind();
}

附带说明 - 您怎么会在 UI 端得到 8 个相同的下拉菜单?是否可以为他们使用某种中继器?

关于c# - 有没有更好的方法来填充多个下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33613250/

相关文章:

c# - 转换十进制?在早期版本的 .NET 中转换为十进制(C# 7.3 版)

asp.net - 使用 ViewModel 模式在 MVC 中的何处放置逻辑

ASP.Net如何通过web.config文件(.htaccess类似)限制对特定IP地址的访问到特定页面?

c# - ORA-06550 : Wrong number or type of arguments error when calling a function inside an oracle package in ASP. 网络

c# - 如何更正此说明 WPF DependencyProperty 用法的示例?

c# - 按钮点击和回发问题

c# - 使用共享源在位图上绘图

c# - 弹出 - 阻止了带有来源的框架

javascript - 定期刷新或轮询

asp.net - 将 Typeahead.js 与 ASP.NET WebAPI 结合使用