9

我正在处理onSelectIndexChanged事件。当 DropDownList 选择更改时引发事件。问题是 DropDownList 仍然返回SelectedValueand的旧值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>

这是 DropDownListOnSelectedIndexChanged事件处理程序:

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

5 回答 5

13

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

当页面重新加载时,您是否看到新值?

于 2008-09-16T18:14:21.577 回答
3

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

        if (!IsCallback && !IsPostBack)
        {
            // Do your page setup here
        }
于 2008-09-16T19:08:19.497 回答
2

添加这个:如果 page.isnotpostback {

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

于 2008-09-16T18:22:11.417 回答
2

这似乎很明显,但无论如何。您是否在其他事件处理程序(如 OnLoad)中使用初始值初始化此下拉列表?如果是这样,您应该检查该事件是由回发还是由第一次加载引起的。所以你应该有类似的东西

if(!IsPostback) d.SelectedValue = "Default"
于 2008-09-16T18:26:39.503 回答
0

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

于 2008-09-16T18:21:31.933 回答