为什么ispostback不能使用下拉框

时间:2012-10-06 11:48:37

标签: asp.net autopostback

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

摘录自.aspx:

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

    </asp:DropDownList>

从page_load <。p>中的.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);
    }

2 个答案:

答案 0 :(得分:1)

Response.Redirect刷新页面,您将松开将具有所选索引的视图状态。您可以在重定向之前将所选索引置于会话中。

protected void MyDropDown_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["MyDropDownSelectedIndex"] = MyDropDown.SelectedIndex.ToString();
    Response.Redirect(Request.RawUrl);
}

答案 1 :(得分:1)

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

编辑:您可能希望缓存填充下拉列表的数据,以便保存一些数据库。我认为您也不需要在选定的索引更改事件中重定向。