SelectedIndexChanged 事件处理程序获取旧索引
题
我正在处理 onSelectIndexChanged
事件。当 DropDownList 选择更改时会引发一个事件。问题是 DropDownList 仍然返回旧值 SelectedValue
和 SelectedIndex
. 。我究竟做错了什么?
以下是 aspx 文件中的 DropDownList 定义:
<div style="margin: 0px; padding: 0px 1em 0px 0px;">
<span style="margin: 0px; padding: 0px; vertical-align: top;">Route:</span>
<asp:DropDownList id="Select1" runat="server" onselectedindexchanged="index_changed" AutoPostBack="true">
</asp:DropDownList>
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
这是下拉列表 OnSelectedIndexChanged
事件处理程序:
protected void index_changed(object sender, EventArgs e)
{
decimal d = Convert.ToDecimal( Select1.SelectedValue );
Literal1.Text = d.ToString();
}
解决方案
您在页面加载中是否有任何代码偶然将值重新默认为第一个值?
当页面重新加载时,您看到新值吗?
其他提示
如果您使用 AJAX,您可能还会执行回调,而不是完整的回发。在这种情况下,您可能想在页面加载方法中使用它:
if (!IsCallback && !IsPostBack)
{
// Do your page setup here
}
添加这个:如果 page.isnotpostback {
}围绕您的代码绑定下拉列表。
这似乎是显而易见的,但无论如何。您是否使用其他事件处理程序(例如 OnLoad )中的初始值来初始化此下拉列表?如果是这样,您应该检查该事件是由回发还是由第一次加载引发。所以你应该有类似的东西
if(!IsPostback) d.SelectedValue = "Default"
您是否可以在整个数据源中复制下拉列表中的项目?
不隶属于 StackOverflow