会话结束和重新启动会阻止DropDownList_SelectedIndexChanged触发

Mac*_*ack 11 c# asp.net session webforms

是否有原因导致ASP.NET会话结束和重新启动会干扰(阻止)在下拉列表中触发SelectedIndexChanged事件?

表格回复但我的断点没有被击中?

在会话重启之前,一切都运行良好.

这是控件的asp:

<asp:DropDownList ID="dlSort" runat="server" AutoPostBack="true" 
                  onselectedindexchanged="dlSort_SelectedIndexChanged">
</asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

这是代码的一部分:

protected void dlSort_SelectedIndexChanged(object sender, EventArgs e)
{
    PopulateItems();
    //Breakpoint above- not hit after session restarts, but hit prior to session end.
}
Run Code Online (Sandbox Code Playgroud)

我留下了一个空的表格,因为它没有被重新填充......

提前致谢,

中号

编辑1:

以下是填充控件的代码:

protected void Page_Load(object sender, EventArgs e)
{
    Form.Action = Request.RawUrl;//Required as page is rewritten
    if (!IsPostBack)
    {
        SetNoItemsMessage("");
        PopulateSortDropDown();
        PopulateItems();
    }
}

private void PopulateSortDropDown()
{
    clsProducts ops = new clsProducts();
    DataTable dt = ops.GetProductSortDropDownData();
    dlSortBy.DataSource = dt;
    dlSortBy.DataBind();
    dlSortBy.ClearSelection();
    dlSortBy.SelectedValue = "1";
}
Run Code Online (Sandbox Code Playgroud)

编辑2:

为了澄清,PopulateItems()方法填充数据Repeater并且应该在排序下拉列表的索引更改(dlSort_SelectedIndexChanged)上运行 - 虽然回发正在发生,但这不会发生.

Page_Load执行一个填充dlSort的方法,它始终在运行.

我已经广泛地检查了页面,除索引更改事件之外的所有内容都会触发.

编辑3:

void Session_Start(object sender, EventArgs e)
{
    InitialiseCommonSessionVariables();//This piece of code sets default values for session variables that are used in every case.
}
Run Code Online (Sandbox Code Playgroud)

oho*_*ndj 2

我经历过类似的事情,并且必须使用 Page_PreRender 事件来实现解决方法来克服它。

在您的情况下,您可以测试 PopulateItems() 是否已经运行,如果没有在预渲染中运行它。