asp.net 枚舉檔案裡面的數字綁定到DropDownList裡面去

來源:互聯網
上載者:User

複製代碼 代碼如下:public class AppEnum
{
public enum PointLogType : int
{
/// <summary>
/// Email確認
/// </summary>
[Description("Email確認")]
Recruit = 1, //新客戶啟用+
/// <summary>
/// 老客戶回饋
/// </summary>
[Description("老客戶回饋")]
Veteran = 2, //老客戶購物曆史回複
/// <summary>
/// 產生訂單
/// </summary>
[Description("產生訂單")]
CreateOrder = 3, //下訂單-
/// <summary>
/// 作廢訂單
/// </summary>
[Description("作廢訂單")]
AbandonSO = 5, //作廢訂單
/// <summary>
/// 作廢訂單取消
/// </summary>
[Description("作廢訂單取消")]
CancelAbandonSO = 6, //審核作廢取消-
/// <summary>
/// 退貨
/// </summary>
[Description("退貨")]
ReturnProduct = 7, //退貨-
/// <summary>
/// 取消退貨
/// </summary>
[Description("取消退貨")]
CancelReturn = 8,
/// <summary>
/// 取消出庫
/// </summary>
[Description("取消出庫")]
CancelOutstock = 9, //取消出貨
/// <summary>
/// 積分轉移
/// </summary>
[Description("積分轉移")]
TransferPoint = 10, //積分轉移
/// <summary>
/// 購物得分
/// </summary>
[Description("購物得分")]
AddPointLater = 11, //滯後加分
/// <summary>
/// 訂單修改
/// </summary>
[Description("訂單修改")]
UpdateSO = 12, //修改SaleOrder
/// <summary>
/// 批發扣除
/// </summary>
[Description("批發扣除")]
WholeSale = 13, //批發減分-, 好象沒有使用。
/// <summary>
/// 買卡
/// </summary>
[Description("買卡")]
InfoProduct = 14, //買卡減分-
/// <summary>
/// 其他
/// </summary>
[Description("其他")]
BizRequest = 15, //Request
/// <summary>
/// 商品評論送積分
/// </summary>
[Description("商品評論送積分")]
Remark = 16, //Remark
/// <summary>
/// 註冊送積分
/// </summary>
[Description("註冊送積分")]
NewRegister = 17, //註冊送積分
/// <summary>
/// DIY活動積分增減
/// </summary>
[Description("DIY活動積分增減")]
DIY = 18, //DIY活動積分增減, 成都DIY系統,沒有用起來。
/// <summary>
/// 系統轉移積分
/// </summary>
[Description("系統轉移積分")]
SysTransferPoint = 19, //系統帳號neweggcs轉移積分給客戶
/// <summary>
/// 系統帳號增加積分
/// </summary>
[Description("系統帳號增加積分")]
AddPointToSysAccounts = 20, //財務給系統帳號增加積分
/// <summary>
/// 參加競猜
/// </summary>
[Description("參加競猜")]
BetReductPoint = 21, //下注使用積分
/// <summary>
/// 競猜所得
/// </summary>
[Description("競猜所得")]
BetAddPoint = 22, //開獎得積分
/// <summary>
/// 新使用者第一次購物贈送積分
/// </summary>
[Description("新使用者第一次購物贈送積分")]
NewCustomerFirstBuy = 23, //新註冊使用者,第一次購物送積分
/// <summary>
/// 自動提升精華贈送積分
/// </summary>
[Description("自動提升精華贈送積分")]
SetScoreAuto = 24, //自動提升精華贈送積分
/// <summary>
/// 市場促銷活動增送積分
/// </summary>
[Description("市場促銷活動增送積分")]
MKTCampaign = 25,
/// <summary>
/// 到期回收積分
/// </summary>
[Description("到期回收積分")]
DisusePoint = -1
}
}

上面是一個枚舉列表,怎麼去讀取呢?用一個DDR來綁定呢? 複製代碼 代碼如下:ddlType.DisplayMember = "Value";
ddlType.ValueMember = "Key";
ddlType.DataSource = CommonFunctions.GetEnumItems(typeof(AppEnum.PointLogType), false);
ddlType.SelectedValue = 25; // 預設值

下面是CommonFunctions裡面的GetEnumItems方法:複製代碼 代碼如下:/// <summary>
/// 獲得枚舉類型所包含的全部項的列表。
/// </summary>
/// <param name="enumType">枚舉的類型</param>
/// <param name="withAll">是否包含"All"</param>
/// <returns></returns>
public static List<EnumItem> GetEnumItems(Type enumType, bool withAll)
{
List<EnumItem> list = new List<EnumItem>();

if (enumType.IsEnum != true)
{
// 不是枚舉類型
throw new InvalidOperationException();
}

// 包含 All 選項
if (withAll == true)
list.Add(new EnumItem(AppConst.IntNull, "All"));

// 獲得特性Description的類型資訊
Type typeDescription = typeof(DescriptionAttribute);

// 獲得枚舉的欄位資訊(因為枚舉的值實際上是一個static的欄位的值)
System.Reflection.FieldInfo[] fields = enumType.GetFields();

// 檢索所有欄位
foreach (FieldInfo field in fields)
{
// 過濾掉一個不是枚舉值的,記錄的是枚舉的源類型
if (field.FieldType.IsEnum == false)
continue;

// 通過欄位的名字得到枚舉的值
int value = (int)enumType.InvokeMember(field.Name, BindingFlags.GetField, null, null, null);
string text = string.Empty;

// 獲得這個欄位的所有自訂特性,這裡只尋找Description特性
object[] arr = field.GetCustomAttributes(typeDescription, true);
if (arr.Length > 0)
{
// 因為Description自訂特性不允許重複,所以只取第一個
DescriptionAttribute aa = (DescriptionAttribute)arr[0];

// 獲得特性的描述值
text = aa.Description;
}
else
{
// 如果沒有特性描述,那麼就顯示英文的欄位名
text = field.Name;
}
list.Add(new EnumItem(value, text));
}

return list;
}
public class EnumItem
{
private object m_key;
private object m_value;

public object Key
{
get { return m_key; }
set { m_key = value; }
}

public object Value
{
get { return m_value; }
set { m_value = value; }
}

public EnumItem(object _key, object _value)
{
m_key = _key;
m_value = _value;
}
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.