如何调用由枚举生成的列表并将其绑定到下拉列表

本文关键字:列表 下拉列表 绑定 何调用 调用 枚举 | 更新日期: 2023-09-27 18:29:11

所以我有一个类文件,其中包含:

    public enum Size
    {
        Large = 1,
        Medium = 2,
        Small = 3
    }
    public static class Serv
    {

        public static List<KeyValuePair<int, string>> GetSize()
        {
            List<KeyValuePair<int, string>> _size = new List<KeyValuePair<int, string>>();
            foreach (var enm in Enum.GetValues(typeof(Size)))
            {
                _size.Add(new KeyValuePair<int, string>((int)enm, ((Size)enm).ToString()));
            }
            return _size;
        }
     }

然后我的主页上有一个下拉列表:

protected void Page_Load(object sender, EventArgs e)
    {
        ddlSize.Items.Add(GetSize);
    }

但这不起作用,因为Page_Load GetSize在当前上下文中不存在。我已经参考了这个文件。那么,我该如何用我的列表GetSize()

如何调用由枚举生成的列表并将其绑定到下拉列表

填充我的下拉列表呢

我看到两件事:

1) 您正在向列表中添加一个方法,而不是该方法的结果

2) 您的方法返回一个List<KeyValuePair<int, string>>,这很好,但您将这些对象直接添加到下拉列表中,这将不会显示我认为您期望的结果。

我会使用接受密钥和vlue的重载来单独添加项目:

protected void Page_Load(object sender, EventArgs e)
{
    foreach (KeyValuePair<int, string> kvp in GetSize())
    {
      ddlSize.Items.Add(New ListItem(kvp.Value.ToString(), kvp.Key.ToString()) ;
    } 
}

您应该将方法的结果DataBind到DropDownList

ddlSize.DataSource = TerritoryServices.GetSize();
ddlSize.DataTextField = "Value";
ddlSize.DataValueField = "Key";
ddlSize.DataBind();