簡體   English   中英

綁定枚舉(列表)的最佳方法是什么 <Enum> )到DropDownList?

[英]What's Best way to Bind collection of Enums ( List<Enum> ) to a DropDownList?

如果我有以下枚舉

enum RequestStatus
    {
        Open = 1,
        InProgress = 4,
        Review = 7,
        Accepted = 11,
        Rejected = 12,
        Closed = 23
    }

我們有以下List

List<RequestStatus> nextStatus = new List<RequestStatus>();
nextStatus.Add(RequestStatus.Review);
nextStatus.Add(RequestStatus.InProgress);

如果我們想將nextStatus綁定到dropDownList我們將其作為波紋管

foreach (RequestStatus req in nextStatus)
    dropDownList.Items.Add(new ListItem(req.ToString(), ((int)req).ToString()));

還有其他最佳方法來執行此綁定嗎?

綁定是在設置數據源和綁定,而不是在列表中添加項目,而您正在尋找的是(假設這里是ASP.NET Forms):

dropdownlist.DataSource = Enum.GetNames(typeof(RequestStatus))
dropdownlist.DataBind();

話雖這么說,我認為這對用戶的友好程度很差,因為我當然不會在下拉列表中看到“ InProgress”。 我認為將ID / Name / Key和DisplayName組合存儲在某個位置,然后像下面這樣綁定ID和DisplayName會更合適:

var items = new[] {{ID = "Review", DisplayName = "Review"}, {ID = "InProgress", DisplayName="In Progress"}};
dropdownlist.DataSource = items;
dropdownlist.DataValueField = "ID";
dropdownlist.DataTextField = "DislayName";
dropdownlist.DataBind();

為了澄清起見,我不主張對該列表進行硬編碼,並且可能會從數據庫和緩存中加載該列表,但是我真的只能在這里猜測您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM