如果我有以下枚举
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
,我们会将其作为belllow
foreach (RequestStatus req in nextStatus)
dropDownList.Items.Add(new ListItem(req.ToString(), ((int)req).ToString()));
还有其他最好的方法来执行此绑定吗?
答案 0 :(得分:3)
绑定是设置数据源和绑定,而不是将项添加到列表中,您要查找的是(假设这是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();
澄清我并不主张对此列表进行硬编码,并且可能会从数据库和缓存中加载它,但我真的只能在这里猜测你的要求。