dropdownlist has a SelectedValue which is invalid because it does not exist in the list of items

I have a dropdownlist ("ddlYear") in a formsview that is populated with years (used for the user's birthdate). I set the selectedvalue to:

Year(DataBinder.Eval(Container.DataItem, "BirthDate"))

I also check that the datetime value I'm grabbing from the database is included in the dropdownlist. However, when I load the page it gives me this error:

'ddlYear' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value

I bound the item to a text box to see if the year is being grabbed, and it is.

The strange thing is that if I set the selected value to: Right((DataBinder.Eval(Container.DataItem, "BirthDate")), 4)

it works!

Any idea why this is happening. I'd prefer to use the "Year" instead of "Right"

Thanks.
SkytideAsked:
Who is Participating?
 
pradeepsudharsanConnect With a Mentor Commented:
or
Convert the year,month,day to string
u can try like this

CString(Year(DataBinder.Eval(Container.DataItem, "BirthDate")))
or use
CType(Year(DataBinder.Eval(Container.DataItem, "BirthDate")),String)


or pass  the value to any java script variable and convert it to string
0
 
SkytideAuthor Commented:
Ok, it gets even weirder. When I have the code below, it works.

</asp:DropDownList>&nbsp;<asp:DropDownList ID="ddlYear" runat="server" SelectedValue='<%# Right((DataBinder.Eval(Container.DataItem, "BirthDate")), 4) %>'>
                <asp:ListItem Value="1979">1979</asp:ListItem>
                <asp:ListItem Value="1980">1980</asp:ListItem>
                <asp:ListItem Value="1981">1981</asp:ListItem>
                <asp:ListItem Value="1982">1982</asp:ListItem>
                <asp:ListItem></asp:ListItem>

BUT when I remove the last blank list item (see below), it gives me the same error.

</asp:DropDownList>&nbsp;<asp:DropDownList ID="ddlYear" runat="server" SelectedValue='<%# Right((DataBinder.Eval(Container.DataItem, "BirthDate")), 4) %>'>
                <asp:ListItem Value="1979">1979</asp:ListItem>
                <asp:ListItem Value="1980">1980</asp:ListItem>
                <asp:ListItem Value="1981">1981</asp:ListItem>
                <asp:ListItem Value="1982">1982</asp:ListItem>

This really doesn't make any sense to me.

0
 
pradeepsudharsanCommented:
hi,

Convert the year,month,day to integer
u can try like this

CInt(Year(DataBinder.Eval(Container.DataItem, "BirthDate")))
or use
CType(Year(DataBinder.Eval(Container.DataItem, "BirthDate")),integer)

regards
Pradeep

0
 
SkytideAuthor Commented:
I still get the same error. Maybe I can set the SelectedValue in the code behind, in the DataBound Event. I'm thinking I can extract the date from a hidden field that is set to (bind("BirthDate")). Is there a way to extract the date from the DataBound event w/o using a hidden field?
0
 
SkytideAuthor Commented:
I just ended up using a hidden field, finding the control in the code behind and setting the selected value of my dropdownlist to the hidden field.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.