c# – 使用反射使用枚举填充下拉列表
发布时间:2020-12-16 01:42:33 所属栏目:百科 来源:网络整理
导读:我正在填充一个页面,其中的控件使用反射读取类的属性.如果属性类型是’String’,我将添加一个文本框.如果属性类型是枚举,我将添加一个下拉列表.现在我必须使用枚举填充下拉选项.如何才能做到这一点? 枚举定义类(Assignment)和用于使用控件填充页面的类(clas
我正在填充一个页面,其中的控件使用反射读取类的属性.如果属性类型是’String’,我将添加一个文本框.如果属性类型是枚举,我将添加一个下拉列表.现在我必须使用枚举填充下拉选项.如何才能做到这一点?
枚举定义类(Assignment)和用于使用控件填充页面的类(classOne)都在同一个命名空间(MySolution.Data)中.当属性名称为’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 panel = new Panel(); 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++; } 解决方法
以下是如何使用下拉列表绑定枚举的示例示例
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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- React-native打包遇到问题:Could not get Batche
- Flex中如何通过监听collectionChange事件检测Dat
- 详解使用vuex进行菜单管理
- cocos2d--WebSocket分析
- Flash(ActionScript,AS) & JavaScript通信浅
- geoserver、openlayers、PostgreSQL 开发环境配置
- c# – 我应该在部署机器上安装asp.net mvc 2吗?
- 新手菜鸟求大神指教,ajax的post请求跳转不到请求
- ruby-on-rails – 为什么私人助手方法仍然可以在
- Ajax+juqery+php 之两个select option控件传值
热点阅读