具有非唯一值的DropDownList正在搞砸viewstate / postbacks(DropDownList with the non

编程入门 行业动态 更新时间:2024-10-22 19:42:58
具有非唯一值的DropDownList正在搞砸viewstate / postbacks(DropDownList with the non-unique values is screwing up viewstate/postbacks)

好的,所以我有一个包含50个ListItem的DropDownList控件,每个50个状态一个。 文本值反映了使每个文本值唯一的每个州名。 但是,每个列表项的value属性包含该状态的当前税率,这意味着某些值不是唯一的。 此控件上的回发会不断更改所选项目。 有没有解决这个问题?

要复制,请将以下代码复制到新的Web表单中。 它只是一个简单的DropDownList。 尝试选择不同的状态。 其中一些坚持,而另一些则不坚持。 例如,尝试选择“Idaho”作为州; 它出于某种原因归还阿肯色州。 这是在OnSelectedIndexChanged事件甚至触发之前发生的,因为如果我选择“Idaho”然后在回发的事件方法中读取所选项目,则所选项目是阿肯色州! 很烦人。

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

我甚至尝试禁用viewstate,然后OnSelectedIndexChanged我将所选索引存储在ViewState [“selectedIndex”]中并在回发时检索它并重新填充下拉列表。 但正如我之前所说的那样,因为所选项目的值与之前预定的事件的值不同,所以它只是在我自定义的viewstate字段中存储了screwy值。

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?

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.

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

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.

最满意答案

我认为你的价值观应该是独特的。 而不是将税率作为价值,而是让价值只是州,然后使用该州获得您的税收价值。 举个例子,在你的代码隐藏中,你可以使用一个Dictionary<string, decimal> taxTable来获取你的值。 如

decimal taxRate = taxTable[yourDropDown.SelectedValue];

I think your values should be unique. Instead of putting the tax rate as the value, instead let the value simply be the state, and then use that state to obtain your tax value. As one example, in your code-behind, you could have a Dictionary<string, decimal> taxTable that you use to get your values. Such as

decimal taxRate = taxTable[yourDropDown.SelectedValue];

更多推荐

本文发布于:2023-07-28 19:00:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1308148.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:DropDownList   非唯一值   postbacks   viewstate

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!