如何调用由枚举制作的列表并将其绑定到下拉列表?

时间:2014-11-05 15:47:19

标签: c# asp.net list enums

所以我有一个类文件:

    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()

来填充下拉列表

2 个答案:

答案 0 :(得分:2)

我看到两件事:

1)您要在列表中添加方法,而不是该方法的结果

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

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

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()) ;
    } 
}

答案 1 :(得分:1)

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

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