Enum 列舉型別,在物件導向工程裡面
是相當方便的一個"類別"
例如我們希望將訂單的狀態,顯示在DropDownList中
方便使用者選取,然而由於這是固定的狀態,透過列舉型別(Enum)
我們可以在背後方便處理使用者的選擇,未來若有更新也可方便管理,可不必理會UI的維護。
列舉型別如下
public enum OrderStatus { 未確認 =0, 已確認, 付款不足, 資料不正確, 出貨中, 結束, 其他 };
動態的繫結下拉式選單
//for order state
string[] sOStatus = Enum.GetNames(typeof(OrderStatus));
ddlOrderStatus.Items.Clear();
ddlOrderStatus.Items.Add("ALL...");
foreach (string status in sOStatus)
{
ListItem liOStatus = new ListItem(status, ((int)Enum.Parse(typeof(OrderStatus),status)).ToString());
ddlOrderStatus.Items.Add(liOStatus);
}
結果如下
圖底順便用迴圈印出列舉型別Enum成功放入List的結果, 分別是Text,Value |
enum類別就這樣放入下拉式選單DropDownList了!
程式重點:
string[] sOStatus = Enum.GetNames(typeof(OrderStatus));
這段會取得列舉型別的所有常數名稱,即在這例中的「未確認、已確認、付款不足…等」內容。
利用一個foreach迴圈將Text和Value塞入DropDownList下拉式選單中
再透過以下程式
(int)Enum.Parse(typeof(OrderStatus),status) ;
外面做了一個轉型,將Enum.Parse傳回來的OrderStaus物件(注意是一個物件!)轉成實際的數值
status是轉換的參數,丟入常數名稱「未確認、已確認、付款不足…等」來傳回物件,再轉換成數值
如果你不知道為什麼可以用int直接轉 列舉型別的數值
看看這吧
int value = (int)OrderStatus.未確認 ;
結果> value = 0
瞧!其實列舉型別本身的意義就是帶著循序數字的型別,Enum轉換int是轉回他的數值資訊。
酷吧
文字有了,數值有了,透過一個foreach迴圈就可以完成一個很靈活的下拉式選單!
列舉型別夠好用吧 ;)