有这样一个学科枚举类型:

/// 学科
/// </summary>
public enum Subject
{ None = 0, [Description("语文")] Chinese = 1, [Description("数学")] Mathematics = 2, [Description("英语")] English = 3, [Description("政治")] Politics = 4, [Description("物理")] Physics = 5, [Description("化学")] Chemistry = 6, [Description("历史")] History = 7, [Description("地理")] Geography = 8, [Description("生物")] Biology = 9
}

这里使用了一个Description特性,目的是为了在一个DropDownList列表中绑定文本数据。

这里使用了一个扩展方法,目的为了返回一个Value和Text的数据列表,上方法:

/// 枚举辅助类/// </summary>public static class EnumHelper{/// <summary> /// 获得枚举类型数据项(不包括空项)/// </summary> /// <param name="enumType">枚举类型</param> /// <returns></returns> public static IList<object> GetItems(this Type enumType){if (!enumType.IsEnum)throw new InvalidOperationException();IList<object> list = new List<object>();// 获取Description特性 Type typeDescription = typeof(DescriptionAttribute);// 获取枚举字段FieldInfo[] fields = enumType.GetFields();foreach (FieldInfo field in fields){if (!field.FieldType.IsEnum)continue;// 获取枚举值int value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);// 不包括空项if (value > 0){string text = string.Empty;object[] array = field.GetCustomAttributes(typeDescription, false);if (array.Length > 0) text = ((DescriptionAttribute)array[0]).Description;else text = field.Name; //没有描述,直接取值//添加到列表list.Add(new { Value = value, Text = text });}}return list;}}

这里采用特性反射的方式得到了对应的Value和Text,最后返回了一个new { Value = …, Text = … }的匿名类的列表。

那么页面上实现就相当简单了:

ddlSubject.DataSource = typeof(Subject).GetItems();
ddlSubject.DataTextField = "Text";
ddlSubject.DataValueField = "Value";
ddlSubject.DataBind();

转载于:https://www.cnblogs.com/xinaixia/p/4480870.html

Asp.Net 之 枚举类型的下拉列表绑定相关推荐

  1. asp.net网页编程 ASP.NET中绑定枚举类型

    asp.net网页编程 ASP.NET中绑定枚举类型<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office: ...

  2. ASP.NET中绑定枚举类型

    在项目开发中好多地方用了枚举,要把枚举显示到下拉列表框中我们平常的方法就是在下拉列表控件中一个一个添加进去!这样做也行但如果我的枚举类型中的枚举值一旦改变,那么你就得满世界的去找然后再修改很麻烦. 这 ...

  3. android 枚举类型比较大小写,Spring 3.0 MVC绑定枚举区分大小写

    如果我有一个像这样的Spring控制器的RequestMapping ... @RequestMapping(method = RequestMethod.GET, value = "{pr ...

  4. 将枚举类型的数据绑定到控件

       将枚举类型的数据绑定到控件 .NET Framework中的数据绑定有几个很酷的功能.你不仅可以将集合.数组.DataTable和DataView对象绑定到列表绑定(list-bound)的控件 ...

  5. DELPHI设置枚举类型size

    delphi枚举类型长度默认为2个字节(单字),而在C中枚举为4个字节(双字),如果需要跨这两个平台编程,传输结构时会由于数据长度不一造成灾难. 经过查找资料,原来delphi可以通过{$Z+} {$ ...

  6. Java并发:五种线程安全类型、线程安全的实现、枚举类型

    点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/u014454538/ article/details/98515807 1. Java中的线程安全 Java线程安全:狭义地认 ...

  7. ASP.NET Web API参数与模型绑定

    目录 背景 例子 兴趣点 ASP.NET提供了将值发送到控制器上的方法的能力.这称为绑定.绑定的两种主要类型是参数和模型.本文是关于使用这两种类型的绑定的快速回顾. 背景 ASP.NET WebAPI ...

  8. 扩展可以支持枚举类型的DorpDownList控件

         我们有很多时候,都会定义一些枚举类型的变量,而我们用的时候,也习惯用DropDownList绑定,绑定的方式也有好多种,比如集合,泛型集合等等.      比如:我们定义一个图片后缀名的枚举 ...

  9. rust笔记6 枚举类型

    基础概念 rust的枚举类型相对于C++来说,有更强大的表现能力,先给出最基本的定义方式: enum IP{V4,V6, }fn main() {let ipv4 = IP::V4;let ipv6 ...

  10. java 枚举类型enum的用法详解

    Java Enum原理 public enum Size{ SMALL, MEDIUM, LARGE, EXTRA_LARGE }; 实际上,这个声明定义的类型是一个类,它刚好有四个实例,在此尽量不要 ...

最新文章

  1. Redis使用场景、Redis线程模型、Redis持久化 - 公开课笔记
  2. jquery GET POST
  3. BDD框架之Cucumber研究
  4. SpringMVC注解@RequestParam全面解析____ 注解@RequestParam如何使用加与不加的区别
  5. 常用服务器安装和部署
  6. java怎么从数据库中查询_java – 从数据库中检索的实体与查询中的情况相同
  7. Win11管理员已阻止你运行此应用,有关详细信息怎么处理?
  8. 调用Kubernetes SDK实现二次开发
  9. (centos6.5)MySQL服务安装
  10. php镜像站群_【镜像站群系统】2020最新单域名PHP网站克隆镜像网站程序源码
  11. IO 和NIO的区别
  12. 系统概要设计阶段2019/10/22软件工程
  13. 如何给MySQL 数据瘦身
  14. Selenium的PO模式
  15. 人脸识别经典开源项目
  16. linux mint 卸载桌面,Linux Mint 默认桌面 Cinnamon 1.6 正式发布
  17. Gym - 102263 B - Road to Arabella
  18. C# 文本框定位到文本末尾
  19. 史上最全数据集网站汇总
  20. 计算机软件著作权侵权行为的认定,计算机软件著作权侵权行为认定方法探讨.doc...

热门文章

  1. sql-查询不同状态下的数据之和
  2. springboot 项目maven 打包错误
  3. 在windows Console 平台下面 用glut编写 opengl程序 注意
  4. FHQ Treap摘要
  5. 【BIRT】02_开发一张简单的报表
  6. Windows PowerShell是啥?看完本文你就懂它了
  7. Linux入门-vsftp
  8. 2006年百度之星程序设计大赛试题初赛题目-题6-百度语言翻译机
  9. [总结] Min-Max容斥学习笔记
  10. preg_match