SelectedIndexChanged事件处理程序获取旧索引

时间:2008-09-16 18:12:34

标签: c# asp.net webforms

我正在处理onSelectIndexChanged事件。 DropDownList选择更改时引发事件。问题是DropDownList仍然返回SelectedValueSelectedIndex的旧值。我做错了什么?

这是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>

这是DropDownList OnSelectedIndexChanged事件处理程序:

protected void index_changed(object sender, EventArgs e)
{
    decimal d = Convert.ToDecimal( Select1.SelectedValue );
    Literal1.Text = d.ToString();
}

5 个答案:

答案 0 :(得分:13)

您是否在页面加载中有任何代码将该值重新默认为第一个值?

当页面重新加载时,您会看到新值吗?

答案 1 :(得分:3)

如果你使用的是AJAX,你可能也会进行回调,而不是完整的回发。在这种情况下,您可能希望在页面加载方法中使用它:

        if (!IsCallback && !IsPostBack)
        {
            // Do your page setup here
        }

答案 2 :(得分:2)

添加: 如果page.isnotpostback {

} 围绕您的代码绑定下拉列表。

答案 3 :(得分:2)

这似乎很明显,但无论如何。 您是否在OnLoad等其他事件处理程序中使用初始值初始化此下拉列表? 如果是这样,您应该通过回发或第一次加载来检查该事件是否上升。所以你应该有像

这样的东西
if(!IsPostback) d.SelectedValue = "Default"

答案 4 :(得分:0)

是否有可能在整个数据源中为下拉列表复制项目?