Looping through Enum on Page_Load

C

CK

Hi All,
Good morning. I had a quick question. I have a public Enum. During page load
I want to loop thru the Enum and put those as items in an asp:dropdownList.
Does anyone have any sample code to do this? Like a foreach loop.

Thanks for any help,
CK
 
I

Ignacio Machin \( .NET/ C# MVP \)

hi

foreach(string s in Enum.GetNames( typeof( your_enum) )
dropdownlist1.Items.Add( s);
 
N

Nicholas Paldino [.NET/C# MVP]

CK,

You should be able to call the static GetNames method on the Enum class
(passing the type of your enumeration), and then bind to the array of
strings that is returned to you.

Also, you might want to cache the string array somewhere, if you are
going to populate this list often. After all, the enumeration (and
therefore the array) is not going to change while the web site is up.

Hope this helps.
 
C

CK

Thanks Ignacio, this worked great, but how do i get the Enum values to be
the vlaues of the list items? Thanks again ~CK
 
G

Guest

This sounds like a bad design approach to even use enums as a basis for
databinding. An easier to code and scalable approach would be to create a
seperate class that provides a method which returns a DataTable which could
then be bound to..

public class MyClass
{
public static DataTable ListValues()
{
DataTable dt = new DataTable();
// create columns and add rows to datatable
return dt;
}
}

This will be beneficial for future development as well if you decide to move
the values into a database. The only thing that would need to be changed
would be the innerworkings of MyClass.ListValues(). And... this is much
easier to DataBind to.

Nicholas Paldino said:
CK,

You should be able to call the static GetNames method on the Enum class
(passing the type of your enumeration), and then bind to the array of
strings that is returned to you.

Also, you might want to cache the string array somewhere, if you are
going to populate this list often. After all, the enumeration (and
therefore the array) is not going to change while the web site is up.

Hope this helps.


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

CK said:
Hi All,
Good morning. I had a quick question. I have a public Enum. During page
load I want to loop thru the Enum and put those as items in an
asp:dropdownList. Does anyone have any sample code to do this? Like a
foreach loop.

Thanks for any help,
CK
 
C

CK

I went with this code and it works pretty well

private void relatedExperience_DataBinding(object sender, EventArgs e)

{

DropDownList relatedExperience = (DropDownList) sender;

foreach(ExperienceRelated er in Enum.GetValues(typeof(ExperienceRelated)))

{

relatedExperience.Items.Add(new ListItem(er.ToString(),er.ToString("d")));

}

relatedExperience.Items.Insert(0,"");

}


Nate said:
This sounds like a bad design approach to even use enums as a basis for
databinding. An easier to code and scalable approach would be to create a
seperate class that provides a method which returns a DataTable which
could
then be bound to..

public class MyClass
{
public static DataTable ListValues()
{
DataTable dt = new DataTable();
// create columns and add rows to datatable
return dt;
}
}

This will be beneficial for future development as well if you decide to
move
the values into a database. The only thing that would need to be changed
would be the innerworkings of MyClass.ListValues(). And... this is much
easier to DataBind to.

Nicholas Paldino said:
CK,

You should be able to call the static GetNames method on the Enum
class
(passing the type of your enumeration), and then bind to the array of
strings that is returned to you.

Also, you might want to cache the string array somewhere, if you are
going to populate this list often. After all, the enumeration (and
therefore the array) is not going to change while the web site is up.

Hope this helps.


--
- Nicholas Paldino [.NET/C# MVP]
- (e-mail address removed)

CK said:
Hi All,
Good morning. I had a quick question. I have a public Enum. During page
load I want to loop thru the Enum and put those as items in an
asp:dropdownList. Does anyone have any sample code to do this? Like a
foreach loop.

Thanks for any help,
CK
 
J

John B

Nate said:
This sounds like a bad design approach to even use enums as a basis for
databinding. An easier to code and scalable approach would be to create a
seperate class that provides a method which returns a DataTable which could
then be bound to..
I would challenge that "bad design" statement.
It would also be quite unlikely that it would change in a lot (majority)
of cases so you would invest the extra effort of doing the premature
architectural optimisations that would quite likely never be needed.
It also of course adds complexity and additional points of failure.
The Simplest Thing That Could Possibly Work is a good maxim imo.
You can also bind directly to Enum.GetNames(....

<...>

JB
 
I

Ignacio Machin \( .NET/ C# MVP \)

Hi,


CK said:
Thanks Ignacio, this worked great, but how do i get the Enum values to be
the vlaues of the list items? Thanks again ~CK


Enum.GetValues ?

C'mon a little search in msdn would had give you that ;)
 
I

Ignacio Machin \( .NET/ C# MVP \)

Hi,

Nate said:
This sounds like a bad design approach to even use enums as a basis for
databinding. An easier to code and scalable approach would be to create a
seperate class that provides a method which returns a DataTable which
could
then be bound to..

//inverted just in case :)
public enum Xes { Male, Female };


I strongly doubt this enum will change anytime soon :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,581
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top