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

0

Page_Load イベントは、SelectedIndexChanged イベントの前に発生します。ドロップダウン リストの値を変更すると、ViewState の値はまだ null のままなので、ドロップダウン リストは "R" に設定されますか?

ページのライフ サイクルについて説明している次の MSDN 記事を見てみましょう: http://msdn.microsoft.com/en-us/library/ms178472.aspx

于 2011-12-13T22:56:42.753 に答える