gpt4 book ai didi

c# - 具有非唯一值的 DropDownList 搞砸了 View 状态/回传

转载 作者:太空狗 更新时间:2023-10-30 00:28:00 27 4
gpt4 key购买 nike

好的,所以我有一个包含 50 个 ListItem 的 DropDownList 控件,一个对应 50 个州。文本值反射(reflect)了每个状态名称,这使得每个文本值都是唯一的。但是,每个列表项的值属性包含该州的当前税率,这意味着某些值不是唯一的。此控件上的回发会不断更改所选项目。有解决办法吗?

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

            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>

我什至尝试禁用 View 状态,然后 OnSelectedIndexChanged 我会将选定的索引存储在 ViewState["selectedIndex"] 中并在回发时检索它并重新填充下拉列表。但正如我之前所说,因为所选项目在进入事件之前与预期的值不同,它只是将古怪的值存储在我的自定义 View 状态字段中。

最佳答案

我认为你的值(value)观应该是独一无二的。与其将税率作为值,不如让值只是状态,然后使用该状态来获取您的税收值。例如,在您的代码隐藏中,您可以有一个 Dictionary<string, decimal> taxTable你用来获得你的值(value)观。比如

decimal taxRate = taxTable[yourDropDown.SelectedValue];

关于c# - 具有非唯一值的 DropDownList 搞砸了 View 状态/回传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327713/

27 4 0