Convert Enums to DataTables






3.79/5 (9 votes)
Aug 25, 2004

57035
An article on converting Enums to DataTables
Introduction
This is just a quick trick to convert an Enum
into a
DataTable
, not sure if it would be of any practical use.
There are no projects to download since is just a
code snippet, copy and paste from this page and you are ready to go, well... let
me know what you think about it.
Using the code
Ok here it goes, as I mentioned just copy and paste, remember that to call the
function you will have to use the GetType
on the enumeration
i.e.:
EnumToDataTable(GetType(EnumerationName) , "", "")
' Test enumeration
Private Enum ETestEnum
Enum_Item_A = 0
Enum_Item_B = 1
Enum_Item_C = 2
End Enum
'--------------------------------------------------------
' Use this little function to test it
'--------------------------------------------------------
Private Sub Test()
Dim oData As DataTable
' Notice that we must use 'GetType(Enumeration)'
oData = EnumToDataTable(GetType(ETestEnum), "KEY", "VALUE")
End Sub
Now here comes the real code
'-------------------------------------------
' Desription: Convert a given enum into a datatable
'
' Parameters: EnumObject - type of the enum
' KeyField - name for the key column, if not
' supplied it will be set to "KEY"
' ValueField - name for the vaue column, if not
' supplied it will be set to "VALUE"
'--------------------------------------------
Public Function EnumToDataTable(ByVal EnumObject As Type, _
ByVal KeyField As String, ByVal ValueField As String) As DataTable
Dim oData As DataTable = Nothing
Dim oRow As DataRow = Nothing
Dim oColumn As DataColumn = Nothing
'-------------------------------------------------------------
' Sanity check
If KeyField.Trim() = String.Empty Then
KeyField = "KEY"
End If
If ValueField.Trim() = String.Empty Then
ValueField = "VALUE"
End If
'-------------------------------------------------------------
'-------------------------------------------------------------
' Create the DataTable
oData = New DataTable
oColumn = New DataColumn(KeyField, GetType(System.Int32))
oData.Columns.Add(KeyField)
oColumn = New DataColumn(ValueField, GetType(System.String))
oData.Columns.Add(ValueField)
'-------------------------------------------------------------
'-------------------------------------------------------------
' Add the enum items to the datatable
For Each iEnumItem As Object In [Enum].GetValues(EnumObject)
oRow = oData.NewRow()
oRow(KeyField) = CType(iEnumItem, Int32)
oRow(ValueField) = StrConv(Replace(iEnumItem.ToString(), "_", " "), _
VbStrConv.ProperCase)
oData.Rows.Add(oRow)
Next
'-------------------------------------------------------------
Return oData
End Function