Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调用由枚举组成的列表并将其绑定到下拉列表?_C#_Asp.net_List_Enums - Fatal编程技术网

C# 如何调用由枚举组成的列表并将其绑定到下拉列表?

C# 如何调用由枚举组成的列表并将其绑定到下拉列表?,c#,asp.net,list,enums,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<KeyV

因此,我有一个类文件:

    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;
        }
     }
但这不起作用,因为在页面中,当前上下文中不存在加载GetSize。我引用了这个文件。那么,我如何用我的list GetSize()填充下拉列表呢?

您应该将方法的结果添加到DropDownList中

ddlSize.DataSource = TerritoryServices.GetSize();
ddlSize.DataTextField = "Value";
ddlSize.DataValueField = "Key";
ddlSize.DataBind();
我看到两件事:

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

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

我将使用接受密钥和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()) ;
    } 
}
受保护的无效页面加载(对象发送方,事件参数e)
{
foreach(GetSize()中的KeyValuePair kvp)
{
ddlSize.Items.Add(新列表项(kvp.Value.ToString(),kvp.Key.ToString());
} 
}

什么是“不起作用”意思?您如何添加方法do items?通过“不起作用”,我的意思是GetSize在当前上下文中不存在。是的,我在标题中引用了它。也许您应该正确地调用它?ddlSize.items.Add(TerritoryServices.GetSize());我有点明白你的意思。但BCdotNets的答案正是我所需要的。我会让你试试。谢谢。数据绑定也很有效。很高兴它为你工作。
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()) ;
    } 
}