【问题标题】:How to call a list thats made from an enum and bind it to a drop down list?如何调用由枚举组成的列表并将其绑定到下拉列表?
【发布时间】:2014-11-05 15:47:18
【问题描述】:

所以我有一个类文件:

    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() 填充我的下拉列表

【问题讨论】:

  • “不起作用”是什么意思?
  • 你是如何添加方法做项目的?
  • by 不起作用,我的意思是 GetSize 在当前上下文中不存在。是的,我在标题中引用了它。
  • 也许你应该正确调用它? ddlSize.Items.Add(TerritoryServices.GetSize());

标签: c# asp.net list enums


【解决方案1】:

我看到两件事:

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

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

我会单独添加项目,使用接受键和值的重载:

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

【讨论】:

  • 我有点明白你在说什么。但 BCdotNets 的回答正是我所需要的。不过,我会让你一试。谢谢。
  • 数据绑定同样有效。很高兴它对你有用。
【解决方案2】:

你应该DataBind你的方法的结果到DropDownList

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多