Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Referring to enums
Message
From
31/01/2011 12:00:26
 
 
To
31/01/2011 10:44:09
General information
Forum:
ASP.NET
Category:
Coding, syntax and commands
Miscellaneous
Thread ID:
01497627
Message ID:
01497984
Views:
31
>I wonder why too. As far as I know the BO property is an int, but the combo's selectedvalue is a string. I had assumed that it was a quirk of combos that the selectedvalue is always a string. I'll try to dig a bit more into this and see what I can work out.

No, the SelectedValue is an object, so if you've bound it to an int then .SelectedValue will be an int. Maybe it's a quirk of MM or maybe you didn't do something correctly. I don't know MM at all, so maybe Tim or someone else might have some suggestions ...

~~Bonnie




>
>>>Thanks Bonnie,
>>>
>>>that did the trick.

>>
>>You're welcome, Frank! Glad I could help. =0)
>>
>>Although, I *do* wonder why you're binding an int to a string property in your BO. I would think that your BO property would be an int also.
>>
>>~~Bonnie
>>
>>
>>
>>>
>>>>You could use this:
>>>>
>>>>
if (this.cboStatus.SelectedValue == ((int)Policy.StatusCode.DeathNotice).ToString())
>>>>
>>>>~~Bonnie
>>>>
>>>>
>>>>
>>>>>I think I made a wrong assumption using these enums.
>>>>>
>>>>>I now want to compare the selectedvalue of a drop down list with the value of the enum. How do I do that?
>>>>>
>>>>>My code used to be like this:
>>>>>
>>>>>
if (this.cboStatus.SelectedValue == "7")
>>>>>
>>>>>and that worked, but I don't like magic numbers so wanted to code it like this:
>>>>>
>>>>>
if (this.cboStatus.SelectedValue == Policy.StatusCode.DeathNotice.ToString())
>>>>>
>>>>>thinking that Policy.StatusCode.DeathNotice.ToString() would bring back "7", but it doesn't, it returns "DeathNotice"!
>>>>>
>>>>>>>On another note, just an FYI: it's not necessary to provide a number for your Enums (Pending = 1), they will default to numbers in the order you've written, starting at 0. If you want yours to start at 1, as you've shown below, or if you need a different numbering scheme for some reason, then you would have to explicitly define them as you did.
>>>>>>
>>>>>>Strictly speaking it would only be neccessary to define the value for the first item, the rest will still increment. You can also skip as below ( and save 24bits by using a byte):
enum StatusCode : byte
>>>>>>    {
>>>>>>        Pending = 1,
>>>>>>        InForce,
>>>>>>        Withdrawn,
>>>>>>        Postponed,
>>>>>>        Deferred,
>>>>>>        Cancelled =100,
>>>>>>        Claimed,
>>>>>>        Matured,
>>>>>>        Lapsed, 
>>>>>>        Surrendered,
>>>>>>        DeathNotice
>>>>>>    }
>>>>>>
>>>>>>
>>>>>>>>Hi,
>>>>>>>>
>>>>>>>>I have an enum defined in a partial class of a Business Object (all my BOs are in one project) like this:
>>>>>>>>
>>>>>>>>
        enum StatusCode
>>>>>>>>        {
>>>>>>>>            Pending = 1,
>>>>>>>>            InForce = 2,
>>>>>>>>            Withdrawn = 3,
>>>>>>>>            Postponed = 4,
>>>>>>>>            Deferred = 5,
>>>>>>>>            Cancelled = 6,
>>>>>>>>            Claimed = 7,
>>>>>>>>            Matured = 8,
>>>>>>>>            Lapsed = 9,
>>>>>>>>            Surrendered = 10,
>>>>>>>>            DeathNotice = 11
>>>>>>>>        }
>>>>>>>>
>>>>>>>>This lets me refer to the enum in code in the partial class no problem, like this:
>>>>>>>>
>>>>>>>>
this.Entity.Status = StatusCode.Pending;
>>>>>>>>
>>>>>>>>However, if I want to use this enum in the interface project (separate to the BO project, but part of the overall solution) I can't as the compiler does not recognise it. Is there some way to make this enum available outside of the BO? Or is this bad design?
Bonnie Berent DeWitt
NET/C# MVP since 2003

http://geek-goddess-bonnie.blogspot.com
Previous
Reply
Map
View

Click here to load this message in the networking platform