gpt4 book ai didi

c# - 使用反射使用枚举填充下拉列表

转载 作者:行者123 更新时间:2023-11-30 14:17:49 25 4
gpt4 key购买 nike

我正在填充一个页面,其中包含使用反射读取类属性的控件。如果属性类型是 'String' 我将添加一个文本框。如果属性类型是枚举,我将添加一个下拉列表。现在我必须用枚举填充下拉选项。如何做到这一点?

枚举定义类 (Assignment) 和我使用控件填充页面的类 (classOne) 都在同一个 Namespace(MySolution .数据)。当属性名称为“SkillLevel”时循环访问 classOne 属性时,我将不得不去分配类获取枚举 SkillLevelEnum 的成员并填充下拉列表。

其他下拉菜单也需要做同样的事情。

我的代码:

namespace MySolution.Data
{
public class classOne : MyAdapter
{
private string _Model;

public string Model
{
get { return _Model; }
set { _Model = value; }
}

private Assignement.SkillLevelEnum _SkillLevel;

public Assignement.SkillLevelEnum SkillLevel
{
get { return _SkillLevel; }
set { _SkillLevel = value; }
}

private Assignement.MinimalSkillsEnum _MinimalSkill;

public Assignement.MinimalSkillsEnum MinimalSkill
{
get { return _MinimalSkill; }
set { _MinimalSkill = value; }
}

public Assignemen.WorkLoadEnum WorkLoad
{
get { return _WorkLoad; }
set { _WorkLoad = value; }
}
}

public class Assignement : MyAdapter
{

#region Enumerations

public enum SkillLevelEnum
{
LowerSkills = 0, HighestSkills = 1, Any = 2
}

public enum MinimalSkillsEnum
{
Accountable = 0,
Responsible = 1,
Expert = 2,
Senior = 3,
Medium = 4,
Junior = 5
}

public enum WorkLoadEnum
{
LessBusy = 0, MostBusy = 1, Any = 2
}

#endregion
}

}

谢谢

编辑:

我不想硬编码任何属性名称。我正在循环访问以下属性。

properties = Utility.GetAllPropertyForClass("className")

面板 panel = new 面板();
panelMe.Controls.Add(面板);

foreach(属性中的PropertyInfo属性) {

        if (!property.PropertyType.IsEnum)
{
TextBox txt = new TextBox();
txt.ID = "txt" + i.ToString();
panel.Controls.Add(txt);
}
else
{
DropDownList ddl = new DropDownList();
ddl.ID = "ddl" + i.ToString();

// Here based on the property.name i need to get the enum members which is defined in a different class using reflection

panel.Controls.Add(ddl);
}

panel.Controls.Add(new LiteralControl("<br/>"));
i++;
}

最佳答案

以下是如何将枚举与下拉列表绑定(bind)的示例

public enum ProgrammingLanguage
{
CSharp,
VB,
JAVA
}
foreach (ProgrammingLanguage enmLnaguage in Enum.GetValues(typeof(ProgrammingLanguage)))
{
cboProgrammingLanguage.Items.Add(new ListItem(enmLnaguage.ToString(), Convert.ToInt32( enmLnaguage).ToString()));
}

要查看此 Vb.Net 代码,请访问此 link.

关于c# - 使用反射使用枚举填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5468124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com