1

我有一个下拉列表,当更改时会将新值保存到 ViewState 变量中,以便在回发后,如果先前设置,下拉列表将从 ViewState 中检索它的选定值。

当它试图将 DropDownList1_SelectedIndexChanged 中的选定值存储到 ViewState 时,它​​总是插入原始值而不是更新的值。在这种情况下,ViewState 始终为“R”并且永远不会根据其他选定的值而改变。

有任何想法吗?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication11
{
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (ViewState["List1_Value"] != null)
        {
            DropDownList1.SelectedValue = ViewState["List1_Value"].ToString();

        }
        else
        {
            DropDownList1.SelectedValue = "R";

        }

    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ViewState["List1_Value"] = DropDownList1.SelectedValue.ToString();

    }       

}
}
4

2 回答 2

1

更改 Page_Load 方法以在不是回发时绕过下拉列表代码。

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (ViewState["List1_Value"] != null)
        {
            DropDownList1.SelectedValue = ViewState["List1_Value"].ToString();
        }
        else
        {
            DropDownList1.SelectedValue = "R";
        }
    }
}
于 2011-12-14T21:16:00.427 回答
0

Page_Load 事件在 SelectedIndexChanged 事件之前触发。当您更改下拉列表中的值时,ViewState 的值仍然为空,所以下拉列表设置为“R”?

看看下面讨论页面生命周期的 MSDN 文章:http: //msdn.microsoft.com/en-us/library/ms178472.aspx

于 2011-12-13T22:56:42.753 回答