Kobarin's Development Blog

C#やASP.NET、公開APIなどについての記録です。

動的に追加したDropDownListの値がPostBack時に保持されない


例えば、以下のようにPageLoad時にDropDownListにアイテムを追加すると、
PostBack時にアイテムが保持されない。

protected void Page_Load(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    DropDownList1.Items.Add(new ListItem("1","1つめ"));
    DropDownList1.Items.Add(new ListItem("2","2つめ"));
    DropDownList1.Items.Add(new ListItem("3","3つめ"));
  }
}

■解決策
以下のように、Page_Initイベント内でアイテムを定義すると、
PostBack時にアイテム内容や選択値が保持される。

protected void Page_Init(object sender, EventArgs e)
{
  if (!Page.IsPostBack)
  {
    DropDownList1.Items.Add(new ListItem("1","1つめ"));
    DropDownList1.Items.Add(new ListItem("2","2つめ"));
    DropDownList1.Items.Add(new ListItem("3","3つめ"));
  }
}