-1

我想在页面重新加载后保留选定的项目:

.aspx 的节选:

    <asp:DropDownList ID="MyDropDown" runat="server" AutoPostBack="true" 
        onselectedindexchanged="MyDropDown_SelectedIndexChanged">

    </asp:DropDownList>

摘自 page_load 中的 .cs

        if (!IsPostBack)
        {
            PopulateDropDownList();
        }

    private void PopulateDropDownList()
    {
        MyDropDown.Items.Add("1");
        MyDropDown.Items.Add("2");
    }

    protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
    {
        Response.Redirect(Request.RawUrl);
    }
4

2 回答 2

1

Response.Redirect 刷新页面,您将失去选择索引的视图状态。您可以在重定向之前将所选索引放入会话中。

protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["MyDropDownSelectedIndex"] = MyDropDown.SelectedIndex.ToString();
    Response.Redirect(Request.RawUrl);
}
于 2012-10-06T11:51:05.163 回答
1

您需要在 Page init 事件中填充下拉列表。如果您在页面加载事件期间这样做,则无法正确恢复视图状态(因为在页面加载事件之前未填充下拉列表),因此无法触发 on selected index changed 事件。

编辑:您可能希望缓存填充下拉列表的数据,以节省一些绕行到数据库的行程。我认为您也不需要在 on selected index changed 事件中重定向。

于 2012-10-06T11:52:13.327 回答