Wednesday, April 20, 2011

What is the best way to see if a RadioButtonList has a selected value?

I am using:

if (RadioButtonList_VolunteerType.SelectedItem != null)

or how about:

if (RadioButtonList_VolunteerType.Index >= 0)

or how about (per Andrew Hare's answer):

if (RadioButtonList_VolunteerType.Index > -1)

To those who may read this question, the following is not a valid method. As Keltex pointed out, the selected value could be an empty string.

if (string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue))
From stackoverflow
  • Those are all valid and perfectly legitimate ways of checking for a selected value. Personally I find

    RadioButtonList_VolunteerType.SelectedIndex > -1
    

    to be the clearest.

  • I recommend:

    RadioButtonList_VolunteerType.SelectedIndex>=0.
    

    According to the Microsoft Documentation:

    The lowest ordinal index of the selected items in the list. The default is -1, which indicates that nothing is selected.

    string.IsNullOrEmpty(RadioButtonList_VolunteerType.SelectedValue) will not always work as you can have a ListItem with an empty value:

    <asp:ListItem Value=''>This item has no value</asp:ListItem>
    
  • In terms of readability they all lack something for me. This seems like a good candidate for an extension method.

    public static class MyExtenstionMethods 
    {   
      public static bool HasSelectedValue(this RadioButtonList list) 
      {
        return list.SelectedItem != null;
      }
    }
    
    
    ...
    
    if (RadioButtonList_VolunteerType.HasSelectedValue)
    {
     // do stuff
    }
    
    SkippyFire : By the way, it should be "return list.SelectedItem != null".
    Martin Clarke : good point, I'll edit the error out.

0 comments:

Post a Comment