如何在重新加载页面之前触发事件处理程序

本文关键字:程序 事件处理 新加载 加载 | 更新日期: 2023-09-27 18:19:30

我有一个控件和事件处理程序:

<asp:DropDownList ID="SortDirection1" runat="server" 
     OnSelectedIndexChanged="SortDirection_SelectedIndexChanged" 
     AutoPostBack="true">
    <asp:ListItem Selected="True" Value="0"> ASC </asp:ListItem>
    <asp:ListItem Value="1"> DESC </asp:ListItem>
</asp:DropDownList>

protected void SortDirection_SelectedIndexChanged(object sender, EventArgs e)
{
    var DDL = (sender as DropDownList);
    Session["SortDirection"] = DDL.SelectedIndex;
}

若我更改了DropDownList中的选择,页面将被重新加载,只有在它之后,这个处理程序才会被触发。所以,这是一个问题。我试着在重写Session["SortDirection"]之前使用它。问题是如何在页面重新加载之前重写Session["SortDirection"]

如何在重新加载页面之前触发事件处理程序

您在DDL上使用自动postback,然后在Selected Index Changed事件中设置会话值。使用该值的正确位置是在Load Complete事件中。该事件在Selected Index Change事件之后被激发。

了解完整的ASP.NET页面生命周期是非常有益的。"其他页面生命周期注意事项"部分有一个很好的图表,显示了页面及其控件的事件和方法。所选索引更改事件发生在"事件处理"部分。

加载完成发生在那之后。当所有过程都已完成,并且就在渲染开始之前,会引发此问题。Load Complete的目的是在所有设置和处理完成后为您提供一个逻辑位置。