close

Enum 列舉型別,在物件導向工程裡面

是相當方便的一個"類別"

 

  

例如我們希望將訂單的狀態,顯示在DropDownList中

state

方便使用者選取,然而由於這是固定的狀態,透過列舉型別(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);
}

 

結果如下

 stat2  

圖底順便用迴圈印出列舉型別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迴圈就可以完成一個很靈活的下拉式選單!

列舉型別夠好用吧 ;)

arrow
arrow
    全站熱搜
    創作者介紹

    Wallace 發表在 痞客邦 留言(0) 人氣()