DropDownList with the non-unique values is screwing up viewstate/postbacks
<p>Okay, so I have a DropDownList control that contains 50 ListItems, one for each of the 50 states. The text value reflects each state name which makes each text value unique. However, the value property of each list item contains that state's current tax rate, which means that some of the values are not unique. Postbacks on this control constantly change the selected item. Is there a work around for this?</p>

<p>To duplicate, copy the code below into a new web form. It is just a simple DropDownList. Try selecting different states. Some of them stick, and others do not. For instance, try selecting "Idaho" as the state; it reverts to Arkansas for some reason. This is happening before the OnSelectedIndexChanged event even fires because if I select "Idaho" and then read the selected item in the event method on postback, the selected item is Arkansas! Very annoying.</p>

<pre><code>            State:&lt;br /&gt;
            &lt;asp:DropDownList BorderWidth="3px" AutoPostBack="true" BackColor="#ffffcc" ID="ddlBillingState"
                runat="server"&gt;
                &lt;asp:ListItem Value="0" Text="Not Specified"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="Alabama"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="0" Text="Alaska"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5.6" Text="Arizona"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Arkansas"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="8.25" Text="California"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="2.9" Text="Colorado"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Connecticut"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="District of Columbia"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="0" Text="Delaware"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Florida"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="Georgia"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="Hawaii"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Idaho"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6.25" Text="Illinois"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="7" Text="Indiana"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Iowa"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5.3" Text="Kansas"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Kentucky"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="Louisiana"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5" Text="Maine"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Maryland"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6.25" Text="Massachusetts"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Michigan"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6.875" Text="Minnesota"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="7" Text="Mississippi"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4.225" Text="Missouri"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="0" Text="Montana"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5.5" Text="Nebraska"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6.85" Text="Nevada"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="0" Text="New Hampshire"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="7" Text="New Jersey"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5" Text="New Mexico"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="New York"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5.75" Text="North Carolina"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5" Text="North Dakota"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5.5" Text="Ohio"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4.5" Text="Oklahoma"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="0" Text="Oregon"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Pennsylvania"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="7" Text="Rhode Island"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="South Carolina"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="South Dakota"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="7" Text="Tennessee"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6.25" Text="Texas"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4.7" Text="Utah"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="Vermont"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5.0" Text="Virginia"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6.5" Text="Washington"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="6" Text="West Virginia"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="5" Text="Wisconsin"&gt;&lt;/asp:ListItem&gt;
                &lt;asp:ListItem Value="4" Text="Wyoming"&gt;&lt;/asp:ListItem&gt;
            &lt;/asp:DropDownList&gt;
</code></pre>

<p>I even tried disabling viewstate, then OnSelectedIndexChanged I would store the selected index in ViewState["selectedIndex"] and retrieve it on postback and repopulate the drop down list. But as I said before, because the selected item is a different value than the one intended before it even gets to the event, it was just storing the screwy value in my custom viewstate field.</p>
