我有一个控件和事件处理程序:
<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"]
?
答案 0 :(得分:0)
您在DDL上使用自动回发,然后在所选索引已更改事件中设置会话值。使用该值的正确位置是加载完成事件。在选定的索引更改事件之后,该事件将被触发。
了解ASPX表单的完整页面生命周期非常有用。 Here is a description from MS。 &#34; 附加页面生命周期注意事项中有一个很好的图表&#34;显示页面及其控件的事件和方法的部分。选定的索引更改事件发生在“事件处理”部分。
之后发生加载完成。当所有进程完成并且在渲染开始之前,这会引发。加载完成的目的是在完成所有设置和处理后为您提供逻辑位置。