Weblog @ rebex.cz

Weblogy na webu Rebexu
Welcome to Weblog @ rebex.cz Sign in | Help
in Search

Weblog @ Rebex.cz :: Honza Šotola

nepravidelné poznámky .NET vývojáře

How to bind Enum as datasource of DropDownList etc.

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 =
foreach(FileType val in
int)val, FileTypeUtil.DescribeFileType(val));

ddlFileType.DataSource = data;
ddlFileType.DataTextField = "Value";
ddlFileType.DataValueField = "Key";

Metoda FileTypeUtil.DescribeFileType vrací pro danou hodnotu výčtového typu její "lidský" název.

Published 25. dubna 2006 16:42 by honzas

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS



Jawad Khan said:

dubna 25, 2006 17:58

Michal said:

Moje verze.
Vyhodou je, ze jde sortovat a filtrovat v DataView, jinak je to obdobne.

''' <summary>
''' Vrací DataTable, obsahujicí jméno a hodnotu Enum typu v parametru typEnum
''' </summary>
''' <param name="typEnum">Enum Typ , ktery je preveden do DataTable</param>
''' <returns></returns>
Shared Function EnumToDataTable(ByVal typEnum As Type) As DataTable
Dim ddlTypnames() As String = [Enum].GetNames(typEnum)
Dim arrddlTypVals As Array = [Enum].GetValues(typEnum)

Dim dt As New DataTable
Dim dr1 As DataRow
Dim dr As DataRow

dt.Columns.Add(New DataColumn("values", GetType(Int32)))
dt.Columns.Add(New DataColumn("names", GetType(String)))
Dim strtmp As String
Dim i2 As Integer
For i2 = 0 To ddlTypnames.Length() - 1
dr = dt.NewRow()

dr(0) = CInt(arrddlTypVals(i2))
dr(1) = ddlTypnames(i2)

Next i2

Return dt
End Function
dubna 26, 2006 11:55

Extending the DropDownList to Support Enums « using … said:

října 10, 2008 13:05

web page said:

So não é melhor pq enquanto coloca para aumentar

em direção a aceleramento do video ele vinco a vez.

srpna 14, 2016 18:25

http://seedspost.ru said:

What's up mates, hoow is the whole thing, and what you wish for to say concerning this paragraph, in my view its

genuinely amazing iin favor of me.

dubna 8, 2017 10:57

make marginal hands said:

I've been exploring for a little bit for any high quality articles or weblog posts

on this kind of space . Exploring in Yahoo I eventually stumbled upon this site.

Studying this information So i am satisfied to convey that I have an incredibly good uncanny feeling I discovered exactly

what I needed. I most unquestionably will make

sure to don't omit this site and provides it a glance regularly.

dubna 28, 2017 20:38

astrologiaagapikaisxeseis.wordpress.com said:

Piece oof writing writing is also a excitement, if you be famikiar with

afterward you can write othewise it is difficult to write.

dubna 30, 2017 10:37

borderlands 2 roland and said:

F*ckin' awesome issues here. I am very happy to look your post.

Thank you a lot and i'm looking forward to contact you.

Will you kindly drop me a mail?

září 8, 2017 14:24

Leave a Comment

Powered by Community Server (Personal Edition), by Telligent Systems