私はドロップダウンリストを持っています。新しい値をViewState変数に保存するので、ポストバック後、ドロップダウンリストは以前に設定した場合はViewStateから選択された値を取得します。ViewStateにドロップダウンリストの選択値を保存する
選択した値をViewStateにDropDownList1_SelectedIndexChangedに格納しようとすると、常に更新された値ではなく元の値が挿入されます。この場合、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();
}
}
}
viewstateに保存することで問題が解決しましたか? if文がFALSEを返すので、常にRであるとは限りませんか? –
if文は最初のpage_loadでfalseを返します。次に、選択した値が変更されると、ViewStateはリストの値を保存しますが、元の "R"のみを保存します。SelectedIndexChangedを発生させるために選択された値は決して異なりません。 2度目のif文はtrueで、リストはViewStateからその値を取得します。これは、選択された新しい値をViewStateに保存しないため、やはりまだ "R"です。 –