Potřeboval jsem naplnit rozbalovací seznam (DropDownList) hodnotami nikoliv z dB číselníku, ale z následujícího výčtového typu:
public enum FileType :int
{
StandardFields = 0,
AdvancedFields = 1,
Visibility = 2,
SpaceMonitoring = 3
}
Většina samplů na toto téma, které jsem našel na internetu, vedla k nabindování pouze stringových hodnot výčtového typu, jenže já potřebuju, aby SelectedValue vracela tu integerovou hodnotu a naopak text v listboxu potřebuji zobrazit "lidsky" a ne symbolické názvy hodnot výčtového typu.
Celkem elegantní řešení vidím přes kolekci SortedList (jsem pořád v .NET 1.x):
Array values = Enum.GetValues(
typeof(FileType));
SortedList data = new SortedList();
foreach(FileType val in values)
data.Add((int)val, FileTypeUtil.DescribeFileType(val));
ddlFileType.DataSource = data;
ddlFileType.DataTextField = "Value";
ddlFileType.DataValueField = "Key";
ddlFileType.DataBind();
Metoda FileTypeUtil.DescribeFileType vrací pro danou hodnotu výčtového typu její "lidský" název.