c# - webform - SelectedIndexChanged事件處理程序獲取舊的索引




webform vs mvc (4)

我正在處理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();
}

你有任何代碼在頁面加載是偶然重新默認值的第一個值?

當頁面重新加載,你看到新的價值?


如果你使用的是AJAX,你也可能會做回調,而不是完整的回傳。 在這種情況下,你可能想在你的頁面加載方法中使用它:

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

添加這個:if page.isnotpostback {

}圍繞你的代碼綁定下拉列表。


這似乎很明顯,但無論如何。 你是否在像OnLoad這樣的其他事件處理程序中使用初始值來初始化這個下拉菜單? 如果是這樣,你應該檢查是否事件是通過回傳或第一次加載。 所以你應該有類似的東西

if(!IsPostback) d.SelectedValue = "Default"




webforms